Bir noktada teknoloji alanında çalışırsanız, ne yaptığınızı teknik olmayan bir kişiye açıklamaya çalışmak zorunda kalacaksınız. Bütün gün o "matris görünümlü şeyde" (terminal) ne yaptığınız hakkında daha fazla bilgi edinmek isteyen meraklı ortağınız olabilir. Ya da belki dost canlısı komşunuz bir programcı olarak çalıştığınızı öğrendi ve sizden yazıcısını tamir etmenizi istedi. Bu tür konuşmalar zor olabilir.
Kod yazmakla geçen uzun bir günün ardından ev ofisimden çıkan ortağım bana derin bir soru sordu:
"Bilgisayara HAYIR diyemez misin?"
Bilgisayarın "HAYIR" ı nasıl anlamadığına dair bir cevap mırıldandım. Yalnızca ikili olarak konuşabilir. Tamamen teknik olmayan bir alanda çalışıyor, ancak ikili kodun ne olduğunu biliyor. "N - O harflerini yazmak için kaç tane sıfır ve bire ihtiyacınız var?" İçini çektim, sorusuna cevap vermenin en basit yolunu bulmaya çalıştım ve bir noktada muhtemelen kaç teknoloji insanının böyle bir konuşma yaptığını düşündüm.
Buradayım, umarım birkaç soruyu aydınlatmak için bu rehberi yazıyorum:
Bu sorunun kısa cevabı evet. Sadece 0'lar ve 1'ler ile konuşurlar ve buna Binary denir . Bir bilgisayarın yaptığı şeyi en temel işlevine indirirseniz, bu yalnızca bir devreden akan elektrik akımıdır. Devre bağlıysa, elektrik devreden geçer ve bu 1 ile ilişkilidir. Devre bağlı değilse, elektrik akmaz ve bu 0 ile ilişkilidir. Elektrik akışını da yönlendiren transistörler vardır, ancak tek ihtiyacınız olan şimdi bilmek, bilgisayarın yalnızca gerçekten açılıp kapanacağını bildiğidir.
Gerçek şu ki, 0/1, açık / kapalı, evet / hayır, doğru / yanlış veya kedi / köpek olabilir. Ona ne dediğimiz önemli değil, önemli olan tek şey farklılığı temsil etmesidir . Bir diğerinden belirgin şekilde farklı olan bir şey. Bilgisayarlar için elektrik ve 0/1 olur. Yani bilgisayarınızdaki her şey aslında bir sayıdır. "N" veya "O" gibi bir harf olsa bile, gerçekten sadece 1'ler ve 0'lardan oluşan bir koleksiyondur.
Muhtemelen bir noktada kendi kendinize bilgisayarların çok akıllı olduğunu düşündünüz. Her türden çılgın ve güçlü hesaplamalar yapıyorlar, değil mi? İnsanlardan çok daha akıllı olmalılar.
Bilgisayarlar akıllı DEĞİLDİR. Aslında çok aptallar. Ama hızlılar.
Size bir insanı sunsam ve size sadece iki şeyi anlayabileceklerini söyleseydim: 0 ve 1, muhtemelen çok akıllı olduklarını düşünmezsiniz. Bununla ilgili daha sonra daha fazlası.
Pekala, insanların birbirleriyle nasıl iletişim kurduğuyla başlayalım. Dil kullanıyorlar. Diller, beyinlerimizden soyut bilgileri almamızı, daha küçük kavramsal parçalara ayırmamızı ve daha sonra bu parçaları, çoğunlukla ağızlarımızdan gelen sesleri ve bedenlerimizden gelen jestleri kullanarak dünyaya daha sindirilebilir bir formatta yayınlanmak üzere yeniden birleştirmemize izin verir. Bilgi Teorisi adı verilen veri alışverişini incelemeye adanmış bir bilimsel araştırma dalı var.
Bilgi her yerde. Aklımızda, akıllı telefonlarımızda ve hatta DNA'mızda. Ve ne tür bilgilerden (verilerden) bahsediyorsak olalım evrensel olan bir ölçü birimine sahiptir. Bu ölçü birimi bit olarak adlandırılır . Bit, (tahmin ettiniz) ikili rakamın kısaltmasıdır . Bitlerin ikili değeri 0 veya 1'dir. Bu tanıdık gelmeye başladı mı? Bir baytta 8 bit vardır ve çoğumuz bayt hakkında her şeyi biliyoruz - muhtemelen akıllı telefonunuzun veya dizüstü bilgisayarınızın kaç gigabayt tutabileceğini tam olarak biliyorsunuzdur.
İnsan beyninin 2,5 milyon gigabayt veri eşdeğeri tutabildiği tahmin edilmektedir. Yani soyut bir şekilde, sokaktaki biriyle konuşuyorsam, beynimden onlarınkine dil kullanarak bitleri (bilgileri) aktardığımı söyleyebilirim. Bir bilgisayar dosyaları bir sabit sürücüye taşıyorsa, aynı zamanda bitleri de aktarıyor demektir.
Programcılar bilgisayarlarla da dilleri kullanarak iletişim kurarlar. Sadece İngilizce veya Fransızca gibi konuşulan diller değil. Javascript, C, Ruby, Java (JavaSCRIPT'den farklı), Python, Go, R, PHP gibi programlama dillerini duymuş olabilirsiniz… liste devam ediyor. Daha önce Javascript'in yazıldığını gördüyseniz, şuna benzer bir şeye benzemiş olabilir:
const min = function(numbers) { let lowestNum = numbers[0]; for (let num of numbers) { if (num < lowestNum) { lowestNum = num; } } return lowestNum; };
İngilizce veya Fransızca gibi insan dilleri, beynimizdeki soyut düşünceler ile sonunda bizi dinleyen kişi ile konuşup yazarak gelen bu bilginin daha az soyut temsili arasında ılımlıdır. Benzer şekilde, programlama dilleri, programcının soyut İNSAN düşünceleri ile MAKİNENİN daha kesin ve daha az soyut 0 ve 1'leri arasında durur.
Normal insanlar, bırakın milyonlarca 0 ve 1'i bir yana, 10 basamaklı bir telefon numarasını hatırlamakta zorlanıyor, bu yüzden tüm bu 0 ve 1'leri soyutlamanın ve hem insanların hem de makinelerin anlayabileceği bir şekilde bilgisayarla konuşmanın bir yoluna ihtiyacımız var. Benzer şekilde, bilgisayar yalnızca bir dizi açık veya kapalı elektrik devresidir, bu nedenle karmaşık dil araçlarımızı anlayamaz. Elde ettiğimiz şey, yukarıdaki Javascript gibi, 0'lar ile 1'ler ve insan dili arasında bir şeydir.
Kısa cevap, programlama dillerinde yazılan programların diğer programlar tarafından 0'lara ve 1'lere çevrilmesidir. Doğru, akıllı programcılar bilgisayarlara anlamadıkları dilleri yaptıkları dillere çevirmeyi öğrettiler. Oldukça havalı, ha? Bu homurtu çalışma, derleyici adı verilen bir şey tarafından yapılır . Derleyici, programcı tarafından yazılan kodu alıp bilgisayarın anlayabileceği kodla yazılmış bir dizi talimata dönüştüren bir programdır. Sonunda, bilgisayarın programcının belirlediği talimatları yürütmesi için elektriğin tam doğru sırada kesilip açılmasına neden olan 0'lar ve 1'lerden oluşan büyük bir uzun listedir. Derleyicide olup bitenlerin gerçekliği bundan çok daha karmaşık ama açıklamaya çalışsaydım bütün gün burada olurduk. Ayrıca yorumlayıcı adı verilen bir derleyiciye benzer bir şey var , ancak yine de basitlik uğruna buna girmeyeceğiz.
Gerçek şu ki, bilgisayarların, yapabileceklerini bildiğimiz karmaşık görevleri yerine getirmek için programcılardan ciddi miktarda el tutması gerekir. Daha önce de belirtildiği gibi, bilgisayarları seviyoruz çünkü işleri ışık hızında yapabilirler, ancak yine de onlara ne yapacaklarını ve nasıl yapacaklarını oldukça ayrıntılı bir şekilde anlatmaları gerekiyor. Bu yüzden bilinçli hale gelip Dünyayı ele geçireceklerinden endişelenmemize gerek yok . Onlara ne düşüneceklerini ve nasıl düşüneceklerini söylemedikçe düşünmeyecekler.
Evet sevgili okur. Bir aşamada, bazı çok zeki insanlar oturdu ve bir programlama dilinin sözdizimini oluşturan tüm belirsiz karakter kombinasyonlarını (yukarıdaki Javascript'te gördüğünüz şeyler gibi) bilgisayar için 0'lar ve 1'lerin bir kombinasyonuna eşleştirdiler. Ve bu mantığın çoğu derleyici tarafından çalıştırılır.
Bu, tüm programlama dillerinin aynı olmadığını belirtmek için doğru zaman gibi geliyor. Yüksek seviyeli ve düşük seviyeli programlama dillerimiz var ve bunlar insan dostu (yüksek seviyeli diller) ve bilgisayar dostu (düşük seviyeli diller) arasında bir ölçekte duruyorlar.
Bir web sitesi için kod yazmak istiyorsanız, JavaScript, Python veya Ruby gibi yüksek seviyeli bir dili güvenli, kolay ve en önemlisi hızlı bir şekilde kullanabilirsiniz. Öğrenmesi daha kolay ve daha az karmaşık. Assembly dili gibi düşük seviyeli diller 0'lara ve 1'lere o kadar yakındır ki bir derleyici bile kullanmazlar. Aslında, derleyicinin aslında başlık altında yaptığı şey, yüksek seviyeli bir dili assembly diline çevirmektir. Düşük seviyeli diller çok daha karmaşıktır ve öğrenmesi zordur. Ortada bir yerde, bir işletim sistemi oluşturmak veya bir derleyici yapmak gibi karmaşık programlama görevleri için yaygın olarak kullanılan, ancak assembly dili gibi bir şey kadar sert olmayan C gibi bir dil vardır.
Daha önce bir bilgisayara gönderilen mektupların bile 1'ler ve 0'lardan oluşan bir koleksiyon olduğundan bahsetmiştim. Kodlama adı verilen bir süreçle harflerden 1'ler ve 0'lardan oluşan bir koleksiyon haline gelirler. ASCII olarak adlandırılan kodlama için kullanılan bir şey var ve İngilizce alfabenin ilk 126 karakterini ve sembolünü göstermek için 7 rakam kullanıyor. Uygun bir şekilde sıralıdır ve N ve O harfleri hemen yan yanadır.
ASCII ile, "1001110 1001111" ile bir bilgisayara hayır dersiniz. Dikkat edin, 7 0 ve 1'den oluşan bu iki koleksiyonun yalnızca ilkinin 0 ve ikincisinin 1 ile bittiği için farklılaştığına dikkat edin. Dediğim gibi, yan yana. Büyük harf kullanımı önemlidir, ancak kavramı anlamak önemli değildir. Peki ya sorduğunuz tüm diğer karakterler? 126'dan çok daha fazlası var!
ASCII asla tek başına yeterli olmayacaktı. Dünyanın birçok karakterini standartlaştırmak için, Unicode Konsorsiyumu adı verilen bu gövdeye sahibiz ve her biri bir ikili rakamlar koleksiyonuyla temsil edilen 100.000'den fazla karakterden oluşan bir listeyi denetliyorlar. Bu kadar çok karakteri temsil etmek için 32 0'lara ve 1'lere kadar gitmeleri gerekiyordu. Bu günlerde, karakterler için kullandığımız kodlama türüne UTF-8 deniyor ve modern web'de oldukça evrensel olarak kullanılıyor. Neyse ki, ASCII ile geriye dönük uyumludur, bu nedenle "1001110 1001111" hala "HAYIR" dır, ancak teknik olarak artık sadece 7 yerine HAYIR demek için 32 0 ve 1'e sahibiz. Bunu anlamak zor ama sizin için daha fazla bilgi var daha fazla keşfetmek istiyorsanız referanslarda.
Şimdi, bir bilgisayar size halkının şarkısını söylemeye çalışırsa nasıl tepki vereceğinizi biliyorsunuz! Sırala… Bu, bahsedilen konulardan herhangi biri (ikili, bilgi teorisi, programlama dilleri, karakter kodlaması, vb.) Hakkında bilinmesi gereken her şeyin kapsamlı veya ayrıntılı bir açıklaması değildir. Büyüleyici bir araştırma alanı olan şeyin yüzeyini zar zor çiziyor ve kavramlar, ilk anlayış seviyenizi ortaya çıkarmanıza yardımcı olmak için basitleştiriliyor.
Umudum, sizin için daha fazla soru ortaya çıkarması ve sizi bilgisayar bilimi hakkında daha fazla şey öğrenmeye yönlendirmesidir. O tavşan deliğinden daha ileri gitmek isteyip istemediğinizi kontrol etmeniz için aşağıda makaleyi bir araya getirdiğim kaynakları listeledim.
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Kasım 2020'nin başlarında SalesForce, açıklanamayacak şekilde JARM adlı yeni bir aktif TLS parmak izi alma aracını duyurdu. JARM'ın temeli, bir hedef sunucu özel olarak hazırlanmış çeşitli farklı TCP "İstemci merhaba" paketleri kullanılarak tarandığında, elde edilen yanıtların birleştirilip, paylaşılan veya benzer bir uygulama veya sunucunun göstergesi olan bir parmak izi sağlamak için karma hale getirilebilmesidir. yığını.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.