UNIX nereden geliyor?

Herkese selamlar 🙂 bu haftalarda programlama üzerine bazı kitaplar okurken oldukça eğlendim, gerçek şu ki programlamayı öğrenmenin en iyi yolu her zaman bir kitaptır, herhangi bir makale, öğretici, bulabileceğiniz rehber (benimki dahil) sadece konuyla ilgili gerçek bir kitapla karşılaştırırken ölçütler. Şimdi, "gerçek" bir kitabın ne olduğunu da tanımlamalıyız, çünkü tüm kitaplar genellikle iyi değildir ve birçoğu gerçekten değerinden daha pahalıya mal olabilir ve zaman kaybedebilir.

Bu yıllar boyunca, okuduğum kitapların listesi ve önerebileceğim kitapların listesi epeyce farklılaştı, ancak şüphesiz bazı favorilerim arasında elimizde (belirli bir sırayla değil):

  • Matt Walker tarafından CEH Sertifikalı Etik Hacker.
  • Python'a Başlamak: Acemiden Profesyonelliğe, Magnus Lie Hetland.
  • Hacking: Jon Erickson tarafından sömürü sanatı.
  • Massimo Banzi'den Arduino'ya Başlarken.
  • Cameron Newbam ve Bill Rosenblatt'ın yazdığı bash Shell'i öğrenmek.
  • Arnold Robbins, Elbert Hannah ve Linda Lamb'in vi ve vim editörlerini öğrenmek.
  • Greg Kroah-Hartman (aynı zamanda bir Gentoo geliştiricisi) tarafından hazırlanan Ceviz Kabuğunda Linux Çekirdeği.
  • Jens Gustedt tarafından Modern C
  • Shellcoder'ın El Kitabı, Chris Anley, John Heasman, Felix «FX» Linder ve Gerardo Richarte.
  • Brian W. Kernighan ve Dennis M. Ritchie (C'nin yaratıcıları) tarafından hazırlanan C programlama dili
  • Richard Stallman, Roland Pesch, Stan Shebs ve diğerleri tarafından GDB ile hata ayıklama.
  • Hacking Linux Exposed: Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (başka bir eski Gentoo geliştiricisi), Thomas Bader, Simon Biles, Colby Clark, Raoul Chiesa, Pablo Endres dahil olmak üzere büyük bir ISECOM araştırmacısı grubunun Linux Güvenliği Sırları ve Çözümleri , Richard Feist, Andrea Ghirardini, Julian "HammerJammer" Ho, Marco Ivaldi, Dru Lavigne, Stephane Lo Presti, Christopher Low, Ty Miller, Armand Puccetti ve diğerleri.
  • İşletim Sistemleri: Konsept Temelli Bir Yaklaşım, Dhananjay M. Dhamdhere
  • Scott Chacon ve Ben Straub tarafından hazırlanan Pro Git
  • Uzman C Programlama: Peter Van Der Linden'den derin sırlar.

Bu kitapların her birinden övgüyle bahsedebilirim, ancak bugün için listedeki sonuncusundan bazı bölümleri alacağız, çünkü bu anektodların çoğu beni büyüledi ve C'nin ve programlamanın bazı karmaşık sırlarını daha iyi anlamama yardımcı oldu. genel olarak. 🙂

Unix ve C

UNIX hakkında konuştuğumuzda, tarih bu sistemin kökeni ve bu güne kadar onun ve türevlerinin (Linux dahil) geliştirilmesinde en çok kullanılan dilin gelişimi ile iç içe geçmiştir. Ve merakla, bu ikisi bir "hatadan" doğdu.

Çoklu Bell Laboratories, General Electric ve MIT'i bir işletim sistemi oluşturmak için bir araya getiren mega bir projeydi, söz konusu sistem birçok hata sundu ve sistemi pratikte kullanılamaz hale getiren en önemli performans arızalarından biri. 1969 yılından bahsediyoruz, bu yüzden o zamanın donanımı, sistemin kendisini çalıştırmak için gereken yazılım miktarını destekleyemedi.

1970 yılına kadar, birkaç Bell mühendisi PDP-7 için basit, hızlı ve hafif bir işletim sistemi üzerinde çalışmaya başlamıştı. Bütün sistem yazılmıştır montajcı ve arandı UNIX parodisi olarak Çoklu çünkü sadece birkaç şey yapmak istiyordu, ama ikincinin kastettiği muazzam boşa harcanan iş yerine bunları iyi yapmak istiyordu. Şimdi nedenini anlayabilirsin Dönem 1 Ocak'ta başlıyor 1970. 🙂 Benim için oldukça ilginç bir gerçek. O zamanlar, hala bir C'nin kendisinden bahsediliyordu, ancak bir Yeni B çünkü Ritchie'nin fikirleri o zamanlar zaten kullanılan B dilinden geliyordu.

Erken C

Yıllar geçtikçe (1972-3) yeni dil şekillenmeye başladıkça C terimi kullanılmaya başlandı ve bu süre zarfında başka bir ilginç gerçek doğdu, birçok programcı ve programcı şakası şöyle diyor:

Programcılar, saymaya 0 yerine 1'dan başladığınızı bilir.

Pekala, bu tamamen doğru değil - bu güne kadar bu şekilde düşünülmesinin gerçek nedeni, oluşturulduğunda derleyici yazarlar için bir diziyi kullanarak hesaplamanın daha kolay olmasıdır. uzaklıklarBunlar, bir başlangıç ​​noktasından istenen hedefe var olan mesafeyi gösterir, bu yüzden:

array[8]=2;

Bize öğenin Dizi sayısı 2 olarak tanımlandı, çünkü diziye eleman 8'nin depolanacağı bellek alanına ulaşmak için 2 birim eklendi.C'den önce birçok dil C sayesinde 1'den saymaya başladı, şimdi neredeyse hepsi 0 ile başlıyor 🙂 bu yüzden bu programcıların değil, derleyici yazarlarının hatasıdır.

Bourne Kabuğu

Bu, doğrudan C ile ilgili olmasa da, birden fazla kişinin Shell programlamanın neden bu kadar tuhaf olduğunu anlamasına yardımcı olabilecek bir konudur ve kesinlikle bilmek ilginçtir. Steve Bourne o sezon Algol-68 için bir derleyici yazdı, bu, anahtarların ( {} ) kelimelerle değiştirilir, bu yüzden onu aşağıdaki gibi tanımlayabiliriz C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Bunlar Algol'un ne anladığına dair sadece birkaç örnektir, ancak bunu bugün kabuk programlamaya uygularsak, programlarınızın neden bir fi her biri için if 🙂 kesinlikle ilginç.

Okumaya başlamak

Kitabın tüm ayrıntılarını size söyleyemem, özellikle de bunların çoğu, önceden anlaşılması için önceden bir arka plan gerektiren programlama konuları olduğu için, ancak yol boyunca bulduğum bazı ilginç anekdotları sizinle paylaşacağımı düşündüm 🙂 I Yapılacaklar listesinde yer alan bazı öğeler üzerinde çalışmak için zamanım olmadı çünkü bu son birkaç kitap beni yakaladı ve her gün onlardan zevk alıyorum ve hepsinden önemlisi onları sonuna kadar anlamaya çalışıyorum. Selamlar ve yakında sizlerle daha fazla konu, selam paylaşabileceğim.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   John dijo

    Makaleniz benim için çok ilginçti. Çok teşekkür ederim.

  2.   HO2Gi dijo

    Her zamanki gibi çok ilginç.

  3.   Jose Rafael dijo

    Çok ilginç açıklamalar iyi.

  4.   Alex dijo

    Mükemmel

  5.   danielga dijo

    İlginç !!! Çok teşekkür ederim.

  6.   ikinci dijo

    çoklu? multics olmayacak (https://en.wikipedia.org/wiki/Multics)

    1 indeksli diller şeytanın icadıdır ...

    1.    ChrisADR dijo

      İlginç not 🙂 Sanırım tarihin bir noktasında her iki terim de kullanıldı:

      https://www.landley.net/history/mirror/collate/unix.htm

      ve tabii ki 90'ların ortalarında yazılan kitapla aynı.

      Açıklama için teşekkürler 🙂 selamlar

      1.    ikinci dijo

        wa, ne tuhaf bir şey, beni şüpheye düşürdün, Expert C Programming'in "satın alınmış" bir kopyasına baktım: Derin sırlar ve multics geliyor, bu multrikleri ilk kez duyuyorum. Ne kadar ilginç, biraz trix tavşanı hatırlatıyor

        1.    ChrisADR dijo

          hahaha kesinlikle merak ediyorum, derin sırların İngilizce kopyasını kontrol ettim, orada aynı zamanda Multrics yazıyor (çünkü beni de şüphelendirmiştin) ... belki bu zamanın bir ifadesiydi 😛

          selamlar

  7.   ED774 dijo

    Büyük katkı

  8.   anonim dijo

    Şüphesiz ilginç, Multrics yanlış basımdan kaynaklanıyor, çünkü bu işletim sisteminin orijinal adı Multics'ti ve Unix başlangıçta Unics olarak adlandırılıyordu, kesin olarak o harika işletim sistemine atıfta bulunuyordu, sonunda ve fonetik olarak Unics se şimdi Unix'e dönüştü. , sadece Unix'in yazarı olarak kabul edilenlerin adını belirtmeniz yeterliydi; Ken Thompson, efsaneye göre, hem Thompson hem de Ritchie, Bell Labs kafeteryasında projeleri hakkında yorum yapıyorlardı ve Ritchie, Thomposon'a Unics with C programını, yazdığı dili yeniden yazmasını önerdi ... tarih. 😉

    Bu arada, daha önce tüm programlar makinenin talimatları ile yazılıyordu, bu da onları tamamen donanıma bağımlı hale getiriyordu, C'nin yeniliği, program yazmayı kolaylaştırmanın yanı sıra, dilin, yazılımları uygulayan donanımdan bağımsız olmasıydı. Derleyiciler, yıllar sonra Java'yı alacak bir felsefe, programların işletim sistemine bağlı olmaması anlamında, ünlü java sanal makinesini ekliyor.

    1.    ChrisADR dijo

      Efsanelerle ilgili kötü olan şey, tarihi birden fazla şekilde çarpıtmalarıdır ... ve Thompson ile Ritchie arasındaki mevcut sohbetin gerçeği gibi ... olmadığında da bir şey olduğunu düşünmenize neden olabilirler. irade) tarihsel ve teknik hatalara yol açtığı için (C, UNIX'den önce değildi) ...

      Ve ikinciye gelince ... gerçeği çarpıtan başka bir efsane, çünkü C'den önce B, A, pascal, Ada, algol-60, PL / 1 ve uygun programlama dilleri olan birkaç tane daha vardı (Assembly'den çok farklı ve işlemcinin donanımına bağlı olan mimari lehçeleri) bu nedenle C bu anlamda "yenilik" yapmadı, basitçe diğer dillerde zaten var olan çözümleri benimsedi ve sonunda bunlardan daha hızlı ve daha iyi popüler oldu ... Tek parça Gerçek şu ki, Java daha sonra sanal makinesini oluşturmak için bu taşınabilirlik kavramına dayanıyordu, ancak bunun için yalnızca C'ye güvenmekle kalmadı, diğer modelleri takip etti, aksi takdirde nesneye sahip olmazdık. java'da odaklı programlama paradigması ...

      Durumu açıklığa kavuşturmam gerektiğini hissettim çünkü daha az bilgili biri bunu doğru kabul edebilir ve sonra bunun böyle olduğuna inanabilir ... selamlar 🙂

  9.   Ignatius Esquivel dijo

    Her zamanki gibi makale çok ilginç, katkılarınız için teşekkürler.