• Ne için hangi programlama dillerine ihtiyaç vardır? Programlama dili ve çeşitleri

    2) Programlama dili nedir sayfa 2

    3) 3. sayfa için hangi programlama dilleri vardır?

    4) Hangi programlama dilleri var s.4 – 7

    5) Derleyici ve yorumlayıcı nedir sayfa 8

    6) Referanslar sayfa 9

    giriiş

    1960'ların ortalarına kadar bilgisayarlar çok pahalı makinelerdi, sadece özel görevler için kullanılıyorlardı ve aynı anda sadece tek bir görev yapıyorlardı (sözde. toplu işleme).

    Bu dönemin programlama dilleri, kullanıldıkları bilgisayarlar gibi, bilimsel hesaplama gibi belirli görevler için tasarlandı. Makineler pahalı olduğundan ve aynı anda yalnızca bir görev yapılabildiğinden, makine süresi de pahalıydı, bu nedenle program hızı çok önemliydi.

    Ancak 1960'larda bilgisayar fiyatları düşmeye başladı, öyle ki küçük şirketler bile bunları karşılayabilirdi; Bilgisayarların hızı arttı ve çoğu zaman görevleri olmadan boşta durmaya başladıkları zaman geldi. Bunun olmasını önlemek için, sistemleri tanıtmaya başladılar. zaman paylaşımı(zaman paylaşımı).

    Bu tür sistemlerde işlemci süresi "kesildi" ve tüm kullanıcılar sırayla bu sürenin kısa bölümlerini aldı. Makineler, terminaldeki her kullanıcıyı sistem üzerinde tek başına çalışıyormuş gibi hissettirecek kadar hızlıydı. Buna karşılık makine daha az boştaydı çünkü aynı anda bir değil birçok görevi yerine getiriyordu. Bir makine yüzlerce kullanıcı tarafından paylaşılabildiğinden, zaman paylaşımı makine süresi maliyetini önemli ölçüde azalttı.

    Bu koşullar altında - güç ucuzlayıp elde edilebilir hale geldiğinde - programlama dillerinin yaratıcıları, hakkında giderek daha fazla düşünmeye başladılar. yazma kolaylığı programlar ve sadece yürütme hızları değil. Doğrudan makine cihazları tarafından gerçekleştirilen "küçük" (atomik) işlemler, bir kişinin birlikte çalışması çok daha kolay ve daha uygun olan daha büyük, daha yüksek düzeyli işlemler ve tüm yapılarda birleştirildi.

    programlama dili nedir

    Programlama dili- icracı için uygun bir biçimde (örneğin, bir bilgisayar) algoritmaları tanımlamak için tasarlanmış resmi bir işaret sistemi. Bir programlama dili, bir bilgisayar programının derlenmesinde kullanılan bir dizi sözcüksel, sözdizimsel ve anlamsal kuralı tanımlar. Programcının, bilgisayarın tam olarak hangi olaylara yanıt vereceğini, verilerin nasıl depolanıp iletileceğini ve bunlar üzerinde çeşitli koşullar altında tam olarak hangi eylemlerin gerçekleştirilmesi gerektiğini belirlemesine olanak tanır.

    İlk programlanabilir makinelerin yaratılmasından bu yana, insanlık iki buçuk binden fazla programlama dili geliştirdi. Her yıl sayıları yenileriyle doldurulur. Bazı diller yalnızca az sayıda kendi geliştiricisi tarafından kullanılırken, diğerleri milyonlarca insan tarafından bilinir hale gelir. Profesyonel programcılar bazen çalışmalarında bir düzineden fazla farklı programlama dili kullanırlar.

    Dillerin yaratıcıları kavramı farklı yorumluyor. Programlama dili. Çoğu geliştirici tarafından tanınan yer toplulukları arasında şunlar yer alır:

    • İşlev: programlama dili, belirli bir bilgi işlem sürecinin yürütülmesi ve bireysel cihazların kontrolünün organizasyonu için bir bilgisayara talimatlar iletmek için kullanılan bilgisayar programlarını yazmak için tasarlanmıştır.
    • Görev: Bir programlama dili, komutları ve verileri bir kişiden bir bilgisayara aktarmak için tasarlanırken, doğal diller yalnızca insanlar arasındaki iletişim için kullanılmasıyla doğal dillerden farklıdır. Prensip olarak, "programlama dilleri" tanımı genelleştirilebilir - bu, komutları, emirleri iletmenin bir yoludur, açık bir eylem kılavuzudur; insan dilleri de bilgi alışverişine hizmet ederken.
    • Uygulamak: Bir programlama dili, veri yapılarını tanımlamak ve işlemek ve hesaplama sürecini kontrol etmek için özel yapılar kullanabilir.

    Programlama dilleri ne içindir?

    Bilgisayar işlemi süreci, bir programın, yani iyi tanımlanmış bir dizi talimatın iyi tanımlanmış bir sırada yürütülmesinden oluşur. Komutun sıfırlardan ve birlerden oluşan makine biçimi, merkezi işlemcinin ne tür bir eylem gerçekleştirmesi gerektiğini gösterir. Bu, bilgisayara gerçekleştirmesi gereken eylemlerin sırasını söylemek için karşılık gelen komutlar için ikili kod dizisini ayarlamanız gerektiği anlamına gelir. Makine kodu programları binlerce talimattan oluşur. Bu tür programları yazmak zor ve sıkıcı bir iştir. Programcı, yürütülmesinde kullanılan veri adreslerinin ikili kodlarının yanı sıra, her programın ikili kodunun sıfır ve bir kombinasyonunu hatırlamalıdır. Doğal insan diline daha yakın bir dilde program yazmak ve bu programı makine kodlarına çevirme görevini bilgisayara emanet etmek çok daha kolaydır. Böylece, özellikle program yazmak için tasarlanmış diller ortaya çıktı - Programlama dilleri.

    Birçok farklı programlama dili vardır. Aslında, çoğu sorunu çözmek için bunlardan herhangi birini kullanabilirsiniz. Deneyimli programcılar, her bir belirli sorunu çözmek için hangi dilin kullanılmasının daha iyi olduğunu bilirler, çünkü her dilin kendi yetenekleri, belirli görev türlerine yönelimi, sorunları çözmede kullanılan kavramları ve nesneleri tanımlamanın kendi yolu vardır.

    Tüm programlama dilleri seti iki gruba ayrılabilir: düşük seviyeli diller Ve üst düzey diller.

    Düşük seviyeli diller, montaj dillerini içerir (İngilizce'den toassemble - birleştirmek, birleştirmek için). Assembly dili, anlaşılması kolay ve hatırlaması kolay talimatlar için semboller kullanır. Bir dizi ikili komut kodu yerine, sembolik tanımları yazılır ve komut yürütülürken kullanılan verilerin ikili adresleri yerine, bu verilerin programcı tarafından seçilen sembolik adları yazılır. Assembly dili bazen mnemocode veya autocode olarak adlandırılır.

    Çoğu programcı, program yazmak için üst düzey diller kullanır. Sıradan bir insan dili gibi, böyle bir dilin kendi alfabesi vardır - dilde kullanılan bir dizi sembol. Bu semboller, dilin sözde anahtar kelimelerini oluşturur. Anahtar kelimelerin her biri kendi işlevini yerine getirir, tıpkı alıştığımız dilde olduğu gibi, bu dilin alfabesindeki harflerden oluşan kelimeler konuşmanın farklı bölümlerinin işlevlerini yerine getirebilir. Anahtar kelimeler, dilin belirli sözdizimsel kurallarına göre cümlelerde birbirleriyle ilişkilendirilir. Her cümle, bilgisayarın gerçekleştirmesi gereken bazı eylem sırasını tanımlar.

    Üst düzey bir dil, kişi ile bilgisayar arasında aracı görevi görerek, kişinin bilgisayarla kişi için daha tanıdık bir şekilde iletişim kurmasını sağlar. Genellikle böyle bir dil, bir sorunu çözmek için doğru yöntemi seçmeye yardımcı olur.

    Yüksek seviyeli bir dilde program yazmadan önce, programcının yazması gerekir. algoritma problem çözme, yani bu problemi çözmek için tamamlanması gereken adım adım eylem planı. Bu nedenle, bir algoritmanın ön derlemesini gerektiren dillere genellikle denir algoritmik diller

    programlama dilleri nelerdir

    Fortran

    Programlama dilleri 1950'lerin ortalarından beri ortaya çıkıyor. Bu türdeki ilk dillerden biri, 1957'de geliştirilen Fortran diliydi (FORMulaTRANslator'dan İngilizce FORTRAN - formül çevirmeni). Fortran, dijital bir bilgisayar kullanarak bilimsel ve teknik problemleri çözmeye yönelik algoritmayı tanımlamak için kullanılır. Tıpkı ilk bilgisayarlar gibi, bu dil de temel olarak doğa bilimleri ve matematiksel hesaplamalar yapmak için tasarlanmıştı. Geliştirilmiş bir biçimde, bu dil günümüze kadar gelmiştir. Modern üst düzey diller arasında, bilimsel araştırmalarda en çok kullanılan dillerden biridir. En yaygın varyantlar Fortran-II, Fortran-IV, EASICFortran ve bunların genellemeleridir.

    Algol

    Fortran'dan sonra Algol dili (Algol-58, Algol-60) 1958-1960'ta ortaya çıktı (ALGOrithmicLanguage'den ALGOL - algoritmik dil).Algol 1964-1968'de geliştirildi - Algol-68.Algol, Avrupalı ​​ve Amerikalı bilim adamlarını içeren bir komite tarafından geliştirildi.Yüksek seviyeli dillere (yüksek seviyeli dil) aittir ve cebirsel formülleri program komutlarına çevirmeyi kolaylaştırır. Algol, SSCB dahil Avrupa'da popülerken, karşılaştırılabilir Fortran ABD ve Kanada'da yaygındı. Algol'ün daha sonra geliştirilen tüm programlama dilleri üzerinde ve özellikle Pascal dili üzerinde gözle görülür bir etkisi oldu. Fortran gibi bu dil de bilimsel ve teknik problemleri çözmeyi amaçlıyordu. Ek olarak, bu dil, programlama sanatı olan programlamanın temellerini öğretmek için bir araç olarak kullanıldı.

    Genellikle, Algol terimi dili ifade eder. Algol-60, sırasında Algol-68 bağımsız bir dil olarak kabul edilir. Algol dili programlama için kullanılmayı neredeyse bıraktığında bile, algoritmaları yayınlamak için resmi dil olmaya devam etti.

    COBOL

    1959 - 1960'da COBOL dili geliştirildi (İng. COMmom Business Oriented Language'den COBOL - ortak bir iş odaklı dil). Öncelikle iş uygulamaları geliştirmek için tasarlanmış üçüncü nesil bir programlama dilidir.Cobol ayrıca ekonomik sorunları çözmek, bankalar, sigorta şirketleri ve bu tür diğer kurumlar için veri işlemek için tasarlanmıştır. Grace Hopper, ilk birleşik Cobol standardının ( Nene kobola).

    Cobol, dilin yaratıcılarının amaçlarından biri yapıları İngilizceye olabildiğince yakın hale getirmek olduğundan, genellikle ayrıntılı ve hantal olmakla eleştirilir. (Bugüne kadar Cobol, içinde en çok kod satırı yazılan programlama dili olarak kabul edilmektedir.) Aynı zamanda, Cobol'un zamanına göre veri yapıları ve dosyalarla çalışmak için mükemmel olanakları vardı ve bu da ona iş uygulamalarında, en azından ABD'de uzun bir ömür sağladı.

    Recoursia kullanıcıları genellikle hangi programlama dilinin öğrenmeye değer olduğunu merak eder. İlk programlama dili konusunda kararlı olanlar için kısa bir rehber hazırladık. Kapsamlı gibi görünmediğini belirtmek isteriz - bu, geliştiricilerin bugün ne yaptığına ve hangi programlama dilinin ilk olabileceğine ve hangisinin olamayacağına yalnızca çok üstünkörü bir bakış.

    Bu arada, operatörüne Belarus işgücü piyasasında ücretler açısından her zaman en iyi kazandıran bir iş sağlayamayan oldukça popüler Web programlama dillerinden biri. Ruby kursları, ilk programlama diline hakim olmak için çalışmaya değmez, çünkü yüksek bir olasılıkla bir işveren araması gecikecektir, çünkü Ruby gençleri için boş pozisyonlar oldukça nadiren ortaya çıkar.

    Beş ya da yedi yıl önce, standart ilk programlama dili Delphi idi - elbette, çünkü Delphi'nin öncülü olan Pascal dili, okul çocuklarına ve öğrencilere programlama öğretmek için icat edildi. Ancak Delphi, gerçek hayat için zaten çok uygun, çünkü programlama ortalamanın önemli ölçüde altında ödeniyor ve bu dilde yeni büyük projeler bulamayacaksınız. bu nedenle tavsiye

    13 Ocak 2016, 15:42

    Farklı programlama dilleri ve uygulama alanları. Yandex'de ders

    • Yandex şirket blogu,
    • Web sitesi geliştirme,
    • programlama,
    • endüstriyel programlama

    Bu yılki ilk yazımızı, Small ShAD'da verilen bir ders olan çok temel bir konuya ayırmaya karar verdik. Teknolojiye ilgi duyan lise öğrencileri katılıyor, dolayısıyla sunumun özgüllüğü - ders özellikle programlamaya yeni başlayanlar ve hangi yönde gelişeceklerini düşünenler için ilginç olacak. Onlar için Yandex'in Stepic.org platformunda alınabilecek bir "Programlamaya Giriş (C++)" kursu var.

    Öğretim Görevlisi Mikhail Gustokashin - Yandex'de akademik programların küratörü, HSE Bilgisayar Bilimleri Fakültesi Öğrenci Olimpiyatları Merkezi direktörü. Mikhail, Tüm Rusya Programlama Olimpiyatlarının düzinelerce kazananını ve ödül kazananını hazırladı.

    Ders, programlama dillerinin ne olduğunu, nasıl farklılık gösterdiğini, nasıl ortaya çıktıklarını ve hangilerinin daha iyi ve hangilerinin daha kötü olduğunu anlatıyor. Başlangıçta biraz dillerin tarihi hakkında konuşacağız - nasıl ortaya çıktılar, insanlar programlamaya nasıl başladı, her şey nasıl gelişti, şimdi neler oluyor. İkinci bölümde, hangi dilin hangi görevler için uygun olduğuna, "en sevdiğiniz dili nasıl seçeceğinize ve hayattan zevk alacağınıza" değinilecektir. Öğretim görevlisi ayrıca tüm bunları nasıl öğrenip sonra bir iş bulacağına dair biraz konuşacak.

    Her zaman olduğu gibi, içeriğinde gezinebilmeniz için bölümün altında dersin ayrıntılı bir kopyası var.

    Programlama dillerinin tarihi

    En baştan başlayalım. Başlangıçta bilgisayarların klavyeleri bile yoktu! Yani, her şey çok kötüydü - ne klavyeleri ne de ekranları vardı, delikli kartları vardı (bunlar delikli veya deliksiz çok küçük şeyler). Buna göre, pimler ya oraya itildi ya da orada ışıkla parladılar. Bir delik varsa (veya tam tersi) - sıfır veya bir anlamına geliyordu. Ve o zamanlar programlar makine kodları kullanılarak yazıldı - bir bilgisayardaki her işlemin (toplama, çıkarma, bazı daha karmaşık işlemler) bir tür makine kodu vardı. İnsanlar bu kodu plakadan kendileri seçtiler, hafızadaki her türlü adres, hepsini elleriyle çaldılar ve okuyucuya ittiler - ve hepsi dikkate alındı. Tabii ki, bir programcının işi o zamanlar muhtemelen çok ilginç değildi - delikler açmak - ve bilim ve teknolojinin gelişmesiyle birlikte, elbette, her türden daha "ilginç" şeyler bulmaya başladılar. Örneğin, zaten hayatı biraz kolaylaştıran birleştirici (Assembler).

    Peki hayatı nasıl kolaylaştırdı? Komut için bir tür "sihirli" kod olduğunu hatırlamak yerine, "insan" İngilizcesine benzer her türden kelime kullanıldı - bazıları ekleme veya taşıma - peki ve ardından kayıtlar veya hafıza alanları, bu işlemlerin gerçekleştirilmesi gereken değişkenler listelendi. Ancak bunun, genel olarak, hangi kayıtta neyin yattığını, değişkenlerin nerede olduğunu ve genel olarak neler olduğunu akılda tutmak için yeterince büyük bir zihinsel çaba gerektirdiği açıktır. Bu neden oldu? Çünkü bilgisayarlar "aptal"dı ve daha "akıllı" bir şey anlayamıyorlardı. Aslında, makine kodunu birleştiriciden derlemek de zaman ve hafıza gerektiriyor (o zamanlar, elbette, yeterli değildi).

    Yavaş yavaş, bu kadar büyük karmaşık programlar geliştirmenin çok zor olduğu anlaşıldı. Programcının bu komutlardaki üretkenliği son derece düşüktü - yani günde birkaç satır yazdı (anlamlı) ve her satır özel bir şey yapmadı - bazı basit aritmetik işlemler. Ve insanlar, program yazmak daha kolay ve daha uygun olsun diye dilleri, özellikle İngilizce'yi insan diline çok daha çok benzetmek istediler. Ve gidiyoruz!

    Eski ve ölü diller

    İlk dillerden biri Fortran'dı. Bu arada, delikli kartlarda da yenildi - Fortran programlarını devre dışı bırakmak için özel delikli kartlar vardı. Ama şimdi bu Fortran'ı alırsanız - bence, 50-60 yıl arasında bile bir yerde. çıktı - ve üzerine bir şeyler yazmaya çalışın, sizin için çok tatsız olacak, sizi temin ederim! Modern Fortran hala yaşıyor, ancak öncekinden oldukça farklı.

    Diğer diller - şimdi muhtemelen duymuş olduğunuz bir şeyi yazacağım, ancak yalnızca programlama tarihi hakkında konuştukları her türlü etkinlikte - bu COBOL. İş uygulamaları yazmak için bir dildi. İş uygulamaları nelerdir? Bankalardaki bazı işlemler, başka bir şey, tüm bunlar Cobol'da yazılmıştır. Tabii ki çok popüler değiliz. Moskova'da büyük zorluklarla bir Cobol programcısı bulacağınızı düşünüyorum. Ve Moskova'da olmayan bir yerde - daha da büyük zorluklarla. Ancak, şaşırtıcı bir şekilde, 10 yıl önce bile, insanlığın yazdığı tüm kodların yarısından fazlası Cobol'da yazılmıştı. Ve şimdiye kadar, tüm bankacılık işlemlerinin önemli bir kısmı, üzerine yazılan programlar (COBOL) yardımıyla yapılıyor ve insanlar hala üzerine bir şeyler yazıyor.

    Bir de “komik” bir dil var, buna Algol (yaratıldığı yılı karakterize eden 68. versiyon) deniyordu. Algoritmik bir dildir. Genel olarak orada bir şeyler biliyorlardı ama şimdi ne yapabilecekleri bizi pek ilgilendirmiyor. Ve bunun üzerine, antik çağa ve nispeten kullanılmayan dillere yaptığımız gezi tamamlanabilir ve hala canlı (ve aktif olarak yaşayan) olana geçebiliriz.

    Eski ama yaşayan diller

    Algol Avrupa'da icat edildi ve Fortran esas olarak Amerika'da kullanıldı - büyük farklar yok. Hangi eğilim görülüyor? İlk başta her şey zordu ve yazmak için, hangi kontakların nerede kapalı olduğunu ve programlama için başka bir şeyi anlamak için neredeyse bir mühendis, elektrik mühendisi olmanız gerekiyordu. O zaman da yapraklarla oturup hatıraları saymak, ona bakmak gerekiyordu. Ve programcı için yavaş yavaş her şey daha basit, daha basit, daha basit ve daha da kolay hale geldi - bir kişinin düşünmesi için mümkün olduğunca az, otomatik olarak yapması mümkün olduğu kadar çok şey. Bu dönemin sonlarına doğru (öğretim görevlisi Algol ve Kobol'u işaret eder), bir anlamda bugüne kadar "hayatta kalan" diller ortaya çıkmaya başlar.

    TEMEL. Belki bazı insanlar hala üzerine bir şeyler yazıyor, en azından bazı kurumlarda QBasic'te öğrettiklerini gördüm - “1989” yazan mavi bir pencere. Genel olarak, "kuvvetli ve esaslı" yaşar! Programcı olmayanlar için bir dil olarak tasarlandı. O zamanlar programcı çok özel bir meslekti. Ve burada size şunu söylüyorlar: "Burada harika bir Temel dilimiz var ve makul herhangi bir kişi onun içinde bir program alıp yazacak - bu kolay." Yine BASIC ve modern BASIC arasında çok büyük bir fark var. 10'a kadar numaralandırılmış tüm bu satırlar, her türden GOTO ve diğer dehşet - artık modern BASIC ile hiçbir ilgileri yok ve hatta 89. yılın BASIC'iyle çok az ilgileri var.

    Bir başka komik hikaye de üniversite çevrelerinde, özellikle Rusya'da ve eski Sovyetler Birliği ülkelerinde yaygın olarak bilinen Pascal dilidir. Şaşırtıcı bir şekilde bir öğretim dili olarak kullanılmıştır ve kullanılmaya devam etmektedir. Dünyanın geri kalanında daha az yaygın ama aynı zamanda canlı ve iyi durumda. Böyle bir Wirth var - işte o bir bilim adamı, bir teorisyen. Algol tartışmasına katıldı, olanlardan hoşlanmadı ve kendi dili olan Pascal'ı buldu. Ve sonra Borland şirketi (ve ondan önce, diğer birçok şirket - özellikle Apple dahil oldu) onu aldı ve her şeyi mahvetti. Güzel bir teorisi vardı, ince - "her şey yoluna girecek" - ve onu alıp insanların çalışması için ihtiyaç duyduğu şeylerle doldurdular. Pekala, istediği kadar güzel olmadı.

    Ve sonunda, . C mühendisler tarafından icat edilmiştir. Pascal bir bilim adamı tarafından icat edildiyse, o zaman C, Kernighan ve Ritchie tarafından icat edildi, Bell'de mühendis olarak çalıştılar. Nasıl oldu? O zamanlar bu dillerde (öğretim görevlisi Fortran, COBOL, Algol'u işaret ediyor), sistematik bir şey yazmak imkansızdı. "Sistematik" nedir? Örneğin, bir işletim sistemi, bazı sürücüler, başka bir şey. Bu diller matematiksel hesaplamalar, ticari hesaplamalar, her şey içindi. Ve geri kalan her şey birleştiricide yazılmıştır. Bazı diller vardı artık öldüler yani C dili Assembler'dan hemen çıkmadı bazı ara şeyler vasıtasıyla ortaya çıktı.

    Amaç ne? Kernighan ve Ritchie, Asteroids oyuncağını oynamayı severdi - bir uzay gemisi uçuyor ve asteroitler var, onlara ateş ediyor ve onlar parçalanıyor. Oynadıkları bir sunucuları vardı ama orada çok insan vardı ve oyuncak yavaşladı. Ve ofislerinde bir yerlerde kimsenin kullanmadığı bir tür bilgisayarları olduğunu buldular. Ancak bir sorun vardı - farklı bir mimariye sahipti ve oyun birleştirici ile yazılmıştı.

    Elbette yeniden yazdılar, hatta üzerinde oynamak için bazı özellikler eklediler. Ancak bu, onları her seferinde yeni bir mimari için yeniden yazmanın pek akıllıca olmadığı fikrine götürdü. Ve sistem programlamaya uygun, yani hafızayı yönetmenin mümkün olacağı, bir şeyin nerede olduğunu anlamanın ve bu hafıza parçalarına nasıl erişileceğinin anlaşılabileceği yüksek seviyeli bir dil yazmaya karar verdiler. Ve böylece, takip eden her şey üzerinde büyük etkisi olan C dili ortaya çıktı. Hepsinin (öğretim görevlisi Algol, Fortran ve diğer bahsedilen dilleri işaret eder) büyük etkisi oldu, ama C - doğru, evet ...

    Buna göre, o zamanlar şimdi olduğundan daha popüler olan bir işletim sistemi olan Unix'in ana diliydi. Ve 80'lerde durum şöyle bir şeydi (öğretim görevlisi Basic, C ve belirtilen diğer dillerde gösteriyor). Tüm bunların ülkemizde yavaş yavaş öldüğünü varsayalım (öğretim görevlisi Assembler, Fortran ve Algol'un sözünü siler) ... Ve 80'lerde bilgisayarlar küçüldü, daha akıllı, daha ucuz hale geldi ve insanlar daha iyi yaşamak için her türlü tuhaflığı istedi, hayat daha da eğlenceli hale geldi.

    80'lerden diller

    İlk tuhaflıklardan biri C++ diliydi. C dilinin çok sayıda eksikliği vardır (pekala, sadece çok büyük bir tane) - kendi ayağınıza vurmak, kurgu ile ayağınıza, diğer ayağınıza ateş etmek, genel olarak bir ayağınızla diğer ayağınıza ateş etmek dahil olmak üzere her şeyi yapabilirsiniz - her şeyi yapın. Ama aynı zamanda orada bazı mimari şeyler oldukça zorlaştırılıyor - yine Assembler'da olduğu gibi nerede olduğumuzu, ne tür bir hafıza ayırdığımızı takip etmemiz gerekiyor; bu hafıza her zaman orada bir yerde "akıyor" - yani, tahsis ettik, silmeyi unuttuk, yanlış şeyi sildik, hafızadan çıktık, genel olarak - birçok sorunu çözdük.

    C++ başlangıçta geliştirmeyi kolaylaştıracak C diline yönelik bir dizi uzantı olarak oluşturuldu. O zamanlar, nesne yönelimli programlama moda oldu ve insanlar her şeyin bir hiyerarşi olarak tanımlanabileceğine karar verdiler, yani bir topunuz var (soyut), ondan bir futbol topu, bir voleybol topu, başka bir soyut top miras alıyorsunuz. O zamanlar "şimdi her şeyi bir tür hiyerarşi şeklinde yazıyoruz ve her şey yoluna girecek, hayat daha iyi olacak, her şey yoluna girecek ve hepsi bu" moda oldu. C++ bir anlamda bu nesne yaklaşımını uyguladı - ilk nesne yönelimli programlama dili değildi, ancak oldukça popüler oldu ve her türden özellik içinde görünmeye başladı. Aynı zamanda, C ++, C dili ile neredeyse tam uyumluluğu (o zamanlar) korudu, C ile yazılmış bir program, vakaların% 99'unda başarıyla C ++ olarak derlendi ve hatta aynı şekilde çalıştı. Bunun amacı, C'den C++'a geçişi kolaylaştırmaktı.

    Nesne yaklaşımına (C++'da) ek olarak, Standart Şablon Kitaplığı (STL) oldukça hızlı bir şekilde ortaya çıktı. Sanırım okulda, hala Pascal okuyanlar, ilk olarak, yerleşik bir sıralamaya sahip olmadığınızı öğrendiler (eski, mavi Borland Pascal'da, şimdi zaten modern versiyonlarda) - bir sıralama örneği (kaynak) var, onu kopyalayıp yapıştırabilirsiniz. Ama burada tamsayıları sıralamak istiyorsanız, burada gerçek sayıları ve burada birbiriyle karşılaştırılabilecek dizileri istiyorsunuz, tam olarak aynı şeyi yapan üç farklı tür yazmanız gerekiyordu, sadece farklı veri tiplerine sahipler. Bu pek iyi değil ve C ++ 'da hemen görünmeyen şablonlar bu sorunu büyük ölçüde kolaylaştırdı. Yani, birbiriyle karşılaştırılabilecek bir şeyi başarılı bir şekilde sıralayan soyut bir programınız vardı.

    90'lı yıllardan betik dilleri

    Ancak zaman durmadı, 80'lerde pek çok ilginç şey oldu. Ancak 80'lerin ve 90'ların başında bilgisayarlar o kadar iyi hale geldi ki, çok garip ve çok verimsiz şeyler yapmak zaten mümkündü. Özellikle bunlar, makine kodunda derlenmeyen, ancak yorumlanan betik dilleriydi. BASIC de bir zamanlar yorumlandı, ancak bu betik dilleri esas olarak kelime işlemeye yönelikti - örneğin, Perl, Python (o zamanlar çok ünlü değildi), PHP, Ruby - bunlar hala bir dereceye kadar yaşayan betik dilleridir (hepsi 2000'den önce, hatta çok daha erken görünmeyi başardı).

    Biraz üzerinden geçelim çünkü bunlar özel şeyler ve artık birçok yerde kullanılıyor. fikir nedir? Derlemezsek, çok daha fazlasına izin verebiliriz. Örneğin bir program koduna bakabilir ve onu bir şekilde kullanabilir; içinde neler olup bittiğini biliyor ve bu sayede pek çok ilginç şey yapabilirsiniz.

    Perl kelime işleme için tasarlandı - o günlerde bilgisayarlarda zaten o kadar çok bellek vardı ki, oraya biraz metin koyabilir ve bu metinle yararlı bir şeyler yapabilirsiniz (örneğin, sözcükleri sayın, bazılarını arayın). Ama bence biraz çılgın insanlar tarafından tasarlandı, çünkü böyle bir şaka var: "Yazılan herhangi bir karakter seti, Perl'de doğru bir programdır." Bence sadece üzerine yazabilirsin, okuyamazsın. Perl koduna bakıp bir şey anlamaya çalıştığımda hiçbir şey anlamıyorum. Belki onu daha iyi tanısaydım bir şeyler anlardım ama hala nasıl olduğunu bilenlerden duyduğum kadarıyla yeniden yazmanın daha kolay olduğunu söylüyorlar. Yani, programlar kısadır ve yeniden yazmak, orada ne olduğunu bulup düzeltmekten gerçekten daha kolaydır.

    O sıralarda, 90'ların ortalarında İnternet ortaya çıktı. İlk başta postaydı, statik HTML'li siteler, ancak insanlar oraya bir tür dinamik eklemek istediler, böylece her şey dinamik olarak gerçekleşsin, bazı formlar doldurulabilsin, ziyaretçi defterleri yapılabilsin, başka bir şey yapılabilsin. Buna göre, bu bir tür etkileşim gerektiriyordu, nasıl etkileşime girdiğine dair bir protokol geliştirdiler ve en önemlisi, isteğine yanıt olarak kullanıcıya "tükürülecek" bu statik (şartlı olarak) sayfaların oluşturulması.

    Genel olarak, o sırada Pearl dışında hiçbir şey uymuyordu. Saf C veya C++ işleyicisinde yazmak kötü bir fikirdi. Ve o zamanlar (ve yeterince uzun süredir) daha iyi bir dil olmadığı için, Pearl web geliştirme için başvurulacak dildi. Elbette ölçek şu anda olanlarla karşılaştırılamaz.

    PHP tesadüfen ... olarak ortaya çıktı. Bir kişi bunu yapmayı çok çabuk bıraktı - bir tür kendi sayfasını yaptı, bir tür ziyaretçi defteri vardı, başka bir şey, bir tür şey. Ve Perl için C'ye benzeyen bir dizi makro yazdı, çünkü C'yi nasıl kullanacağını biliyordu, çünkü bu onun için çok uygundu. Ve buna Kişisel Ana Sayfa adını verdi. Paylaştı ve şöyle dedi: "Millet bakın ne yazmışım, burada her şey Perl'dekinden çok daha net ve düzenleyebilirsiniz." Ve insanlar bunu beğendi.

    Sonra konuyu kapattı. Genel olarak sonuç olarak bu PHP yaşamaya başladı ve zamanla Perl'den çok daha popüler hale geldi. Ancak bu "doğum travması" (Pearl için bir dizi makro fikri) ona oldukça acımasız bir şaka yaptı. Dil garip. Yani kendi kendine gelişti, kimse tasarlamadı, geliştirme sürecini kimse yönetmedi (ne şirket ne de herhangi bir kişi), ancak her biri beğendiğini gören birçok grup vardı. Sonuç olarak orada fonksiyonlar farklı deniyor, bir stil bile yok, her şey altını çizerek, genel olarak nasılsa, ayarlar burada burada ve tüm bunların nasıl çalışacağı çok net değil. Ama o öyle sandığı için oturup iki saat içinde PHP yazabilirsiniz.

    Python ve Ruby: Ruby artık daha az popüler, Python bir şekilde daha iyi "planlanmış", bunun hakkında daha sonra konuşalım. O günlerde bunların (öğretim görevlisi Perl, Python, Ruby, PHP'yi işaret ediyor) oldukça özel amaçlar için oldukça özel diller olduğu açıktır. Genel olarak, kimse o zamanlar üzerlerine herhangi bir sistem programlaması, hiçbir iş mantığı yazmadı ve şimdi bunu pek yapmıyorlar.

    90'lardan derlenmiş diller

    Yaklaşık aynı zamanlarda gideceğiz ama farklı bir yönde. O zamanlar ülkemizde web için, metin işleme için değil, sadece uygulamalar için, işletim sistemleri için, oyuncaklar için - genel olarak, her şey için yazılması gereken hemen hemen her şey için C++ kullanılıyordu. Ama C++ gerçekten tüyler ürpertici bir dil. Neden? Çünkü, öncelikle geriye dönük uyumluluk nedeniyle C'nin tüm sorunlarını devraldı. Orada, C'dekilerle aynı (doğal olarak, C ++ 'da yeni yollar eklendi) milyonlarca farklı şekilde kendinizi öldürebilirsiniz. Aynı zamanda, C ++ yazarlarının amaçladığı gibi her şeyi iyi ve doğru yazarsanız, o zaman elbette eski C-ish yöntemleriyle kendinizi öldürmek zaten imkansızdı ve görünüşe göre daha azı varmış gibi. Ancak, kendine ait çok garip bir nesne modeli vardı. Programı modüllere, parçalara bölmek bir şekilde C'den geldi (C veya C ++ 'da yazabilirseniz - aslında, sadece kitaplığın metnini programınıza eklemek olarak tasarlandı, sonuç olarak, bir sürü içerir yazdığınızda, her şeye sahip olursunuz - en başta olduğu gibi "ilkel" ise - her şey tek bir dosyaya eklenir ve sonra derlemesi çok uzun zaman alır, çünkü birkaç kez gider. Aynı Pascal, Wirthovsky, bu konuda çok daha fazlaydı ayrıntılı, sonraki sürümler daha da iyi hale geldi.

    Genel olarak, C++'ın birçok eksikliği vardır. C ++ ile yazabilmek için bir programcının niteliklerinin yüksek olması gerekiyordu ve bu tür programcılar pahalıydı (ve eğitim ve başka bir şey, yani piyasada programcı bulmak zor, çok ödemeleri gerekiyor, peki, genel olarak bu bir şey değil ...). Ve bilgisayarlarımız gittikçe daha hızlı sayılıyor, daha ucuz hale geliyor, insanlar kendilerine yeni bilgisayarlar alıyor ve daha fazla uygulama, telefonları için daha fazla oyuncak, genel olarak daha fazla keyif istiyor.

    Java böyle doğdu. Bu dilin adını nasıl aldığına dair oldukça komik bir hikaye de var. Programcılar var, her zaman kahve içiyorlar ve o zamanlar Java adasında yetişen kahve içmek modaydı. Dil, gömülü cihazlar için, özellikle bir kahve makinesi için bir dil olarak tasarlandı. İsim böyle ortaya çıktı...
    Genel olarak onunla ne başladı, içinde iyi olan neydi ve neden büyük popülerlik kazandı? Önce Sishnoi'nin mirasından tamamen kurtuldular. İşaret yok, vücudun bir yerine ateş edip her şeyi kırmanın çok daha az yolu var. İkincisi, nesne modeli açısından çok daha yeni fikirler ortaya koydular - yani C ++, Java'dan çok daha önce ortaya çıktı ve daha arkaik, "vahşi" bir nesne modeli kullandı. Pekala, burada (öğretim görevlisi Java'yı işaret ediyor) o zamanlar zaten daha fazla düşünülmüştü ve teoride insanlar düşündü ve pratikte uyguladı ve her şeyi çok daha havalı hale getirdi.

    Ve son olarak, üçüncü. Java'daki programlarımız makine kodunda değil, sanal bir makine kodunda toplandı. Yani, bir sanal makineniz (VM) JVM - Java'nız vardı. Programlarınız bir tür ara temsil halinde birleştirildi ve daha sonra, bu makinenin yardımıyla, zaten çalıştırıldılar. Ne verdi? Birincisi, yavaşladı, ikincisi, hafızayı korkunç bir güçle yedi, üçüncüsü, her yerde (teorik olarak) taşınabilirdi - hatta bir kahve makinesine, hatta bir kahve değirmenine, hatta bir bilgisayara, hatta bir cep telefonuna bile. Bir yandan bu iyi, yani az önce sanal bir makinenin uygulanmasını yazdınız, ardından Java programlarınızı her yerde başlatıyorsunuz. Ancak öte yandan, o sırada aynı telefonda çok az hafıza olması, düşük performans olması ve tüm bunların ek olarak körelmeye ve yavaşlamaya başlaması kötü.

    Ancak bu bile, genel olarak dilin icat edildiği ana şey değildir. Java dili, programcıların nitelikleri için gereksinimleri azaltmak için icat edildi. Yani, daha kötü programcılar Java'da iyi programlar yazabilir, çünkü bu sizin kötü programlar yazmanıza izin vermez - programları kötü yazmanın hiçbir yolu yoktur. Orada sadece iyi programlar yazabilirsiniz. Eh, dilin yaratıcılarının anlayışında.

    Yani, C'de, C ++'da, Python'da, herhangi bir şeyde, projemizden her şeyi karıştırdığımız, saatlerce devam eden bir tür korkunç çöplük üretebilirsek ve başka bir şey varsa. Java'da bir çöp tenekesi üretmek de mümkündür, ancak bunun için zaten biraz çaba sarf etmeniz gerekiyor. Yani, varsayılan olarak, bir "çöplük" olmadığı ortaya çıkıyor, başka sorunlar ortaya çıkıyor, bir şeyin miras alındığı, orada miras alındığı - genel olarak, çok anlamlı olmayan on tanesinin tek bir anlamlı satır olduğu ortaya çıkıyor. Ancak, belki de bu kadar orta düzeyde beceriye sahip bir programcı oldukça yüksek kaliteli kodlar yazabilir.
    Neredeyse sona geldik. Bizim için bir sonraki ortaya çıkan şey .Net (dotnet) ve özellikle C # ile ilgileniyoruz (neredeyse aynı şey [öğretim görevlisi Java'yı işaret ediyor], yani aralarında seçim yaparsanız ayrıntılarda farklılıklar var - paranın nerede daha fazla ödendiğini görün).

    Ve bir şey daha - JavaScript. Aynı yıl ortaya çıkan Java diliyle hiçbir ilgisi yok - kelime moda oldu, ticari markayı kullanmak için lisansladılar.

    Dikkat edilmesi gereken en önemli şey nedir? (Öğretim görevlisi C++'tan Java, .Net, C#, JavaScript ve PHP'ye oklar çizer). Bu dillerden birinde ve diğer birçok dilde basit bir program yazmak için - C ++ biliyorsanız, genellikle başka bir şey bilmenize gerek yoktur - C ++ alıp yazarsınız ve ardından başlangıçta dolar eklersiniz, küçük şeyler üzerinde başka bir şey yaparsınız ve herhangi bir şey üzerinde sizin için çalışmaya başlar (öğretim görevlisi, C ++ oklarının atandığı dilleri gösterir). Yani, bazı basit şeylerde son derece benzerler. Bazı okul problemlerini, eğitim problemlerini veya başka bir şeyi çözerseniz (büyük bir proje tasarlamıyorsunuz - sayıları okuyan, sayıları konsolda görüntüleyen, başka bir şey yapan bir dosyanız var), o zaman bu diller arasında neredeyse hiçbir fark yok. JavaScript ve PHP'nin uzmanlaşmış olduğu açıktır, her şeye biraz farklı sahiptirler. Ve burada (öğretim görevlisi Java ve C#'yi işaret ediyor) çok az fark var.

    O zamandan beri, her türlü başka ilginç şey ortaya çıktı, ancak başarılı bir şekilde yaşayıp yaşamayacakları belli değil. Şimdi ne, hangi görevler için kullanıyorlar?

    Göreve bağlı olarak dil seçimi

    Diyelim ki bir ekran kartı sürücüsü yazma göreviyle karşı karşıyasınız. Bugün hangi dili kullanacaksınız? (İzleyicilerden yüksek sesle: Java!) Neden… Java harika, ama neden Ruby veya PHP'de olmasın? (Öğretim görevlisi alaycı bir şekilde konuşur.)

    düşük seviyeli programlama

    Düşük seviyeli bir şey yazıyorsanız, o zaman C en iyi seçimdir, ancak bunun için C++ kullanıldığını duydum (ama görmedim). Ama buna çok az inancım var, çünkü C'de açıkça kontrol edebilirsiniz - çok fazla bayt bellek verdiğiniz için, bu çok fazla bayt olacağı anlamına gelir. Ve C++'da (STL), bir dizi nasıl uygulanır? Bir şekilde uygulandı. Ve sonunda, orada nasıl ve ne olduğunu bilmiyoruz, belki video kartımızın hafızası tükenecek veya başka bir şey olacak. Bu nedenle, C hala yaşıyor ve ölmüyor, hala sistem programlamanın bu tür görevleri var - bir işletim sistemi yazmak, sürücüler yazmak, başka bir şey yazmak - C bunun için harika. Ek olarak, pillerle çalışan (ve elbette milyonlarca olacak, her şey bu nesnelerin İnterneti ile asılacak) her türden cihaz ortaya çıkıyor (Nesnelerin İnternetinin gelmek üzere olduğuna söz veriyorlar), çok ucuz olmalı ve çok az elektrik tüketmelidir. Buna göre, 2 KB bellek, 5 kHz'de bir işlemci olacak ve elbette yakın gelecekte bir tür sanal makine veya betik dili takmak mümkün olmayacak - bu, C'de bir şeyler yazmanız gerektiği anlamına geliyor. Ve şimdi bile, örneğin, bir video kartı (OpenCL veya başka bir teknoloji) üzerindeki hesaplamalar - onlar için program yazmak için yeni bir dil bulamıyorlar - bazı büyük kısıtlamalarla C yapıyorlar. İnsanlar nasıl yapılacağını zaten biliyor diye, neden yeni bir şey öğrenelim? Resmi olarak, bu muhtemelen aynı zamanda bir anlamda C'dir.

    web programlama

    Diyelim ki yeni bir Facebook (sosyal ağ) yazmak istiyorsunuz. Ne üzerine yazacaksın? (İzleyicilerden HTML ve CSS hakkında konuşuyorlar.) HTML, CSS tasarımdır ve orada fotoğraf eklemenin, arkadaş edinmenin, yorum bırakmanın mümkün olmasını istiyoruz.

    Komut dosyası kısmı için - yani, istemci tarafında ne olacak - bu JavaScript'tir. Ayrıca, bazen JavaScript başka bir dilde oluşturulur ve gönderilir (komut dosyası oluşturulur ... çünkü bazen mantıktaki bazı değişiklikleri işlemek daha kolaydır).

    Şaşırtıcı bir şekilde, PHP - ve Facebook ve diğer birçok büyük projede yazılmıştır. Tabii ki, hala iyi çalışması ve yapıldığı gibi olmaması için kendi şeyleri yazmam gerekiyordu, ama yaptılar. Prensipte ne yazdığınızın bir önemi yok ama ben Perl'i önermiyorum. Burada ve şimdi, elbette, kimse web için sıfırdan bir şey yazmıyor. Herkes bir tür çerçeve veya başka bir şey yazar. Online mağaza? Bir çevrimiçi mağaza için bir çerçeve indirdik - hepsi bu, bir çevrimiçi mağaza yazdık.

    İş programlama

    Ardından, sıkıcı bir banka başvurusu yazmak istiyorsunuz. Ya da mesela sim kart satan biri var mı? Belki hiç telefon falan aldınız ve size “İşte sistem askıda, yapabileceğimiz bir şey yok” dediler. Böyle bir uygulamayı neye yazacaksınız? (İzleyicilerden Python hakkında bir haykırış) Python'da böyle şeyler yazamazsınız, nesiniz?! Python'da iş için hiçbir şey yazılmamalıdır. Neden? Çünkü Python'da bir şey yazdığınızda, yazma sürecinde önemli sayıda hata bulamazsınız. Python, mümkün olan her şekilde dinamik olarak yazılmıştır ve genel olarak, orada bir hatayı gizleyebilirsiniz, böylece bu dolandırıcı kullanıcıların orada ne yaptığını bile anlayamayacağınız, sizin için her şeyin bozulduğu bir durumda ortaya çıkar. Yani, Python'da kendiniz için küçük komut dosyaları yazmak daha iyidir - orada neler olduğunu ve ne yapıldığını anlıyorsunuz. Ya da atmaktan çekinmeyeceğiniz bir şey: rakiplerinizden önce bir şey ortaya çıkarmak istiyorsunuz, peki ya her seferinde bozulursa. Python'da yazdınız ve hepsi bu - pazarı ele geçirdiniz. Ve uzun süre bir şey yazarsanız, örneğin bir tür bankacılık uygulaması (kredileri onaylaması için, başka bir şey) - onu Java'da yazarsınız. Çünkü orada ciddi bir mesele var, kağıtlar, para, belgeler, başka bir şey, ama her şeyi kıracak kadar karıştıramazsınız, aksi takdirde insanlar gücenir - paraları gitti ve hiçbir yere ulaşmadı, çünkü bir noktada hattınız bir sayıya dönüştü veya tam tersi. Yani, metodik olarak Java'da alıp yazdığınız, yazdığınız anlamına gelir ... Peki ya da .Net'te, prensipte bu tür durumlar da olur. Orada elbette sorunlarla da karşılaşabilirsiniz, ancak yine de bunun olasılığı biraz daha düşüktür.

    Ordu, havacılık endüstrisi için programlama

    Şimdi sizi bir roketle aya göndermeye karar verdiklerini hayal edin. Roket motorlarını kontrol eden kodu ne olarak yazmayı tercih edersiniz? Bir göz atalım. Bu, muhtemelen (öğretim görevlisi Perl, Python, PHP, Ruby'yi işaret ediyor) buna değmez - yavaşlar, başka bir şey olur, genel olarak, böyle bir roketle uçmayı kabul etmem. C++'da mı? Dürüst olmak gerekirse, ben de yapmazdım çünkü C++'ta kendini öldürmenin çok fazla yolu var. Uzayda bir yerde olduğunuzda, bu pek iyi değil.

    Belki Java'da? Orada her şey oldukça güvenilir görünüyor ve mimari iyi, vahşi tipler yok, fazladan bellek taşması yok. Diyelim ki en önemli an geldi ve Java'mız bizim için çöp toplamaya karar verdi. İnmemiz gerekiyor, yavaşlıyoruz ve o "Hayır, çöp gidiyor" diyor. Genel olarak, o kadar da değil.

    Dürüst olmak gerekirse, bu programın Pascal ile yazılmasını tercih ederdim. Tabii ki Pascal'ı pek sevmiyorum ama bir şekilde bu tür konularda çok havalı olurdu.

    Aynı anda yazılım geliştirme için birden çok dili kullanma

    Peki, genel olarak modern diller hakkında söylenmesi gerekenler. Artık pek çok proje herhangi bir dilde yaşamıyor, yani bazıları bir dilde, bazıları başka bir dilde ve bazıları üçüncüsünde yaşıyor. Örneğin, çılgın miktarda bilgiyi işleyen bir tür web uygulamanız varsa, disk erişimleri (veritabanları bile değil, o kadar büyükler ki, orada zaten yazılmış bir veritabanı bile çekemezler) muhtemelen diske çılgınca yazmak için düşük seviyeli bir C ile yazılmıştır. Doğal olarak, tüm projeyi C'de yazmaya değmez. Belki Java'da yazılmış, hızlı aramalar için C işlevlerini çağıran bazı ara mantıklar vardır. Pekala, ön uç (kullanıcının baktığı şey), elbette, doğrudan tarayıcı (JavaScript) tarafından doğrudan yürütülen şey üzerine, bazı komut dosyalarında zaten bir şeye yazılmıştır. Ve tüm bunlar birlikte yaşıyor ve başarılı bir şekilde etkileşime giriyor.

    Bazı uygulamaların geliştirilmesinde, hatta büyük olanlarda, bazen insanlar ne yapar? Onu alıyorlar ve Python'da bir prototip yazıyorlar (hepsi nasıl çalışacak), eskizini çıkarıyorlar, bir tür mimari üzerinde düşünüyorlar. Üzerine yazmak gerçekten çok hızlı - bir prototip attılar, denediler ve şöyle dediler: “Vay canına! Bu çok havalı! Ve tamamen yeniden yazıldı. Görünüşe göre işi iki kez yaptılar, bu da iki kat daha uzun sürdü (yani bir buçuk). Ama hayır! Genellikle bu yolun fena olmadığı ortaya çıkıyor, çünkü hemen bir şeye, örneğin Java'ya yazarsanız ve sonra karar verirseniz: "Hayır, yeniden düzenleyelim, mimariyi tamamen değiştirelim ve tüm bunlar", o zaman 10 kat daha fazla zaman harcarsınız. Böyle şeyler de var ve yaşıyor.

    Herhangi bir programlama dilinin başarısı için koşullar

    Şimdi bazı güzel dillerin neden hayatta kalamadıklarından ya da çok sınırlı bir alanda yaşadıklarından bahsedelim. Wirth kötü Apple, Borland ve tüm bunların Pascal'ına yaptıklarını görünce daha da iyi bir dil buldu - Oberon. Sadece çılgınca minimalistti - yani çok az komut vardı (Dizeler? Neden dizelere ihtiyacımız var? Bir dizi karakter oluşturacağız!). Pekala, onunla gidebileceği ölçüde bir şeyler yolunda gitmedi.

    Bir şey daha. ABD ordusu onlardan her şeyin çalıştığı ve her şeyin yazılabileceği havalı bir dil geliştirmelerini istedi. Sonuç, oldukça canavarca bir Ada diliydi, ancak yine de bir şeyler yazılıyor, ancak yine - yalnızca ordu için.

    Sorun nedir? Başlangıçta hiçbir şirketin desteklemediği Python gibi bazı diller neden piyasayı ele geçirdi. Yine kötü tasarlanmış olan PHP, pazarı (çoğu) tek başına devraldı ve ele geçirdi. Ve her türden milyarlarca dolar yatırıldı (öğretim görevlisi Ada'yı işaret ediyor) ve hiçbir yere gitmedi, hiçbir şey olmadı. Ne ile bağlantılı? Bunun nedeni, bu dillerin etrafında herhangi bir altyapı olmamasıdır. Yani, dil mükemmel olabilir, ancak belgeler olmadığı sürece, soruları yanıtlayabilecek bir topluluk olmadığı sürece (Stack Overflow'ta) ve son olarak, en önemlisi, çok sayıda kitaplık olmadığı sürece, dil ateş etmez. Yani, örneğin, Oberon'da bir web sitesi yazmak istediniz. Ve bu nedir, neden olmasın? Ve sorun başlıyor ... Hafifçe test etmek için web sunucunuzu Oberon'a kuramazsınız, Oberon'da olmadıkları için herhangi bir kitaplığa bağlanamazsınız. Ve tüm bunlar bir tür koltuk değneği aracılığıyla yapılır, kuvvetler gider ve genel olarak sitenizi tükürür ve Oberon yerine saf C'ye yazarsınız. Ve diğer dillerden kütüphaneleri kullanabilen diller iyi yaşıyor. Yavaşladığı yerlerde aynı Python. Genel olarak, sıralama gibi her türlü standart şey ve başka bir şey C'de yazılır ve o (Python) onlarla nasıl etkileşime gireceğini bilir.

    Java ayrıca bir Java Yerel Arayüzüne sahiptir. Bu esasen C'dir, yani orada (bence hep yasaklamak isterler ama görünüşe göre henüz yasaklamamışlar) bu diller mevcut kütüphanelerle (esas olarak C'ler) etkileşime girebilir. Ve bu nedenle alıyorlar ve çalışıyorlar. Size aktarmaya çalıştığım fikri anlıyorsunuz, değil mi? C-kütüphanesini nasıl bağlayacağını bilmeyen dillerde yazmayın. Peki, havalı bir şey kullanmak istiyorsan. Eh, ve yavaş yavaş onlar (diller) bir tür altyapı kazanıyorlar. Ve iyi yaşıyorlar.

    Programlama dili ve kariyer rehberliği

    Şimdi hayattan ne istediğinizi nasıl anlayacağınızdan bahsedelim. Harika şeylerden ne olur? Biraz sistem programlaması yapabilirsin, değil mi? Bu baytları orada saymak harika, quadrocopters, bir tür kamera başlatmak istiyorsunuz, başka bir şey yapın. O zaman C muhtemelen senin seçimin.

    Hayattaki belki de en ilginç uygulamaları yazmak istemiyorsanız, ancak bunları tasarlamak, hepsini düşünmek ve çoğu zaman oturup sıkılmak için çok para kazanmak sizin için harika (niteliksel olarak sıkıldıysanız bunun bedelini ödemeniz gerekir), işte buradalar - Java, .Net. Bir bankada işe gidiyorsunuz, yazıyorsunuz, dokuzda beyaz gömlekle işe gidiyorsunuz, iyi bir maaş alıyorsunuz ve en iyi Java geliştiricilerinin, .Net koyunun tavsiyelerine göre yazıyorsunuz ve tüm bunlar ...

    Bazı uygulamalar, biraz tarayıcı, biraz oyuncak, başka bir şey yazmak istiyorsanız, o zaman C ++ harikadır. Web siteleri yazmak istiyorsanız, işte buradalar, seçtiğiniz diller (öğretim görevlisi Perl, Python, PHP, Ruby'yi gösterir), pek bir fark yoktur. Tek şey, PHP Python'dan önce ölecek, bu yüzden yeni şeyler öğrenmek için çok tembelseniz Python öğrenin. Büyük bir fark görmeyeceksin ama daha uzun süre dayanacaksın.

    Ruby'ye ne olduğu da belirsiz. Eh, zaten öğrendiyseniz PHP'yi de yapabilirsiniz, çünkü o kadar basitler ki orada yeniden öğrenmek çok uzun sürmüyor.

    Ve son olarak, programlama dillerinin başka bir uygulama alanı daha var - bu, programcı olmayan birinin onları kullandığı zamandır. Diyelim ki bir matematikçi, fizikçi, kimyager, analist, herhangi birisiniz ve hızlı bir şekilde bir şeyler hesaplamanız, bazı verileri analiz etmeniz gerekiyor (örneğin, Komutan Adaları'nda kaç tilki yaşıyor biyologlara). Tüm bunları Excel'de bir tabloya aktarabilir veya bir şeyle analiz edebilirsiniz. Python da bunun için çok uygundur, metinle çalışabilir ve kütüphaneler her türden, istatistiksel ve tüm bunlarla doludur. Bir tür Makine Öğrenimi yapmak, bazı verileri işlemek, tahmin etmek istiyorsanız, Python bunu da şimdi en hızlı şekilde yapıyor. Doğru, görevlerin çok farklı olduğu belirtilmelidir. Örneğin, fiyatların sürekli değiştiği koşullarda borsada anında işlem yapmak istiyorsanız, Python'da Makine Öğrenimi ne kadar havalı yazarsanız yazın, bunu daha hızlı bir şekilde yazan kişilerin, algoritmaları daha kötü olsa bile, siz her şeyi saymadan önce her şeyi satın almak için zamanları olacaktır. Bu nedenle, bu makine öğrenimi görevleri bile (bazıları) yüksek performans (ve son derece yüksek) ve buna bağlı olarak başka diller gerektirir.

    Ne istediğini anlamanın tek yolu her şeyi denemektir. Şimdi her şeyi nasıl deneyebileceğinizin vizyonlarından biri olarak söyleyeceğim. Nasıl programcı olunur ve mutlu olunur? Bu yüzden. Sıfırdan başlıyoruz. Burada okulda matematik, Rus dili ve diğer zorunlu ve seçmeli konuları çalışıyorsunuz ve programlama alanındaki bilginiz şu anda tahtaya yansıtılıyor (öğretim görevlisi boş bir tahtayı gösteriyor). Ve mutlu bir insan olmak, sevdiğin şeyi yapmak, çok para kazanmak ve kendini hiçbir şeyden mahrum bırakmamak ve mutlu olmak istiyorsun.

    Bunu başarmanın yollarından biri. Hiç üniversiteye gitmeyen veya okulu bırakıp milyarder, şirket sahibi vb. Ancak, milyarder olmayabilecek ama aynı zamanda iyi yaşayan insanların çoğunluğunun yine de bir noktada üniversiteden mezun olduğu belirtilmelidir.

    Üniversiteye girmekle ilgili durumumuz nedir (şimdi okulda okuyorsunuz)? Okuldayken, bir sonraki adımın kayıt olmak olduğunu anlamanız ve bununla ilgilenmeniz gerekir. Sınavı geçin veya Olimpiyatı kazanın. Sınavda Pascal, C ++ (saf C dahil), Python (onlardan daha fazla bahsetmeyeceğim) kullanabilirsiniz. Olimpiyatta - aynı Pascal, aynı C ++, aynı Python (şimdi sorunları hakkında konuşacağız) ve çoğu zaman Java var. Olimpiyatlara bağlı olarak her şey olur, ama mesele bu değil.

    Bilişimde Tüm Rusya Olimpiyatlarında dillerin dağıtım programı nasıl görünüyor? En havalı Olimpiyat olan tüm Rusya'ya katılan insanlar ne üzerine yazıyorlar? Şöyle görünüyor (burada Pascal anlamına geliyor ve burada yaklaşık 2000 ve burada yaklaşık sıfır, işte C ++ ve işte 2015).

    2000 yılında neredeyse hiç kimse C++ yazmadı. 15 yıl geçti ve Pascal modern olmasına rağmen neredeyse hiç kimse Pascal'da yazmıyor. Hemen hemen aynı şeyi yapabilen bir dil. Sadece herkes bunu öğrenemeyecek kadar tembelleşti, her türlü yeni trendle ve herkes elbette hiçbir şey yapamayan Borland Pascal'da yazmaya devam ediyor. C++'da insanlar sıralamak için bazı algoritmalar (STL) yazarlar - harika, sort() yazdılar ve hepsi bu. Pascal'da, her zamanki gibi, eskide - bu bir problem. Bazı setler (gerekli) yazdılar - mükemmel, C ++ ile yazdılar, Pascal'da yine tam bir eziyet. Yeni Pascal'larda elbette bunu yapabilirsiniz, ancak genel olarak paraya mal olurlar. Bunu fark etmemiş olabilirsiniz, ama öyle.

    Java da var ama Java'da çok fazla harf var. Büyük projeler içindir, ancak küçük tek seferlik programlar için oldukça kötü olduğu ortaya çıkıyor çünkü çok fazla ekstra harf var. Ama bazı insanlar da yazıyor, üzerine yazmayı öğrenebilirsiniz. Ancak KULLANIM'da mevcut değildir ve KULLANIM'ın çoğunlukla alınması gerekecektir.

    Sınav için en iyisi nedir? Sınav için Python öğrenmek en iyisidir (eğer hiçbir şey bilmiyorsanız ve okulda size hiçbir şey öğretmiyorlarsa). Sınav sorularının bir kısmı çok iyi çözülmüş. Olimpiyatta genel olarak C ++ 'nın (kullanıldığı) ortaya çıktı, çünkü Python çok yavaş, üzerinde her şey çözülmedi.

    Böylece, dilin küçük bir alt kümesini ve bazı algoritmaları (belki) öğrendiniz ve Olimpiyatlarınızdan diploma almak ve daha yüksek bir eğitim almak için üniversiteye gitmek için birçok sorunu çözdünüz.

    Şimdi Yandex ile yaptığımız Uygulamalı Bilimler Fakültesi uygulamalı matematik ve bilgisayar bilimlerinde EYO'da kursu nasıl oluşturduğumuzdan, dillerin hangi sırayla öğretildiğinden, nasıl işlendiğinden bahsedeceğim. İlk yarıyılda - Python (tam olarak değil, okulda nasıl öğretilmesi gerektiği hakkında) ve C ++ (zaten daha geniş, genellikle okullarda öğretildiğinden çok daha geniş). Hemen söyleyelim ki korkmayın, canınız bir anda yapmak isterse “Ne yani ben bunları zaten biliyorum, neden bir yere gidip ders çalışayım? Başka bir yere gitmeyi tercih ederim." Nasıl programlanacağını zaten iyi bilenler için, hemen algoritma çalışmasına ve oldukça teorik bir hazırlık yapma fırsatı var. Şimdi onlara bakmıyoruz, bu (tahtaya işaret ediyor) ortalama programlayanlar ya da hiç programlamayanlar içindir.

    İlk sömestr size Python'un temellerini öğretir, böylece insanlar programlamayı öğrenebilsin ve kimse fazla gücenmesin. Python okullarda nadiren öğretilir, çoğunlukla insanlar Pascal veya C ++ bilgisiyle gelir. Bir kitle okulu ise, temelde Pascal bile. Pekala, kimse gücenmesin diye herkes yeni bir dil öğreniyor (sanki eşit şartlardaymış gibi). Ve C++, çünkü C++'dan istediğiniz yere gidebilirsiniz.

    Ardından "Algoritmalar" kursu ve ayrı bir kurs projesi gelir. Uygulamalı klasik algoritmalar. Teoride bir şey aldığımızdan değil, karmaşıklığı hesapladık. Derste aldık, karmaşıklığı hesapladık, seminerde - aldık, algoritmayı uyguladık. Proje, öğrencilerin bitmiş bir şeyi yapmasıdır. Örneğin projelerden biri şuydu: hesaplamak ... Diyelim ki Moskova'da çok sayıda daireniz var ve anlıyorsunuz: “Ah, fazladan bir sürü şeyim var, bir tane kiralayacağım. Ve bir fiyat belirlediler ve kimse sizden bir daire kiralamak istemiyor - muhtemelen çok pahalı. Ya da bir fiyat koydular, hemen sizden aldılar ve "Ah, muhtemelen ucuza geçtim" diye düşünüyorsunuz - ve siz de üzülüyorsunuz. Yani, bir daire kiralamanın ne kadara mal olduğunu hesaplamak gerekiyordu? Verileri girersiniz - sizin için bir tahmin oluşturur. Birkaç şeyden oluşan böyle bir site: cümleleri alın, ayrıştırın, bir tür (muhtemelen) basit makine öğrenme algoritması uygulayın ve içinde bir şey seçebileceğiniz, bir şey sürebileceğiniz, birkaç metre, birkaç oda, sauna sayısı, dairenizdeki jakuzi sayısı ve kabaca maliyeti tahmin edebileceğiniz güzel bir web yüzü yapın. Yani, biraz bitmiş, çok karmaşık olmayan bir şey. Burada (öğretim görevlisi algoritmalar üzerine bir kursu işaret eder) konsol G / Ç ile çok güçlü bir C ++ anlamına gelir. Pekala, ve burada (öğretim görevlisi "proje" yazısını işaret ediyor), bir akıl hocasının rehberliğinde, belki veritabanlarıyla, belki metin ayrıştırmayla ve başka bir şeyle.
    Ardından üçüncü dönem gelir - "Bilgisayar Sistemleri" adlı bir ders. Anlaşılması gereken oldukça fazla derleyici var (çok az) ve sonra, saf C'ye benzer bir şey ve işletim sistemleriyle etkileşim, özünde sistem programlama. Ve seminer projesi aynı zamanda her tür ağ etkileşimi konusuyla ilgili, oldukça düşük seviyeli bir şey: bazı yardımcı programlar geliştirin, örneğin rsync (senkronizasyon, biliyor olabilirsiniz. Saf C'de, aşağı yukarı, babalarınızı ağ üzerinden tüm dosya erişimleriyle vb. senkronize edecek bir rsync analoğu yazın).

    Ve son olarak, dördüncü. Buna ne isim vereceğimi bile bilmiyorum, web geliştirme gibi gerçek geliştirme için gereken teknolojiler karmaşası. Yani, bu, veritabanlarının pratik uygulamasıdır, yine projede yapılanlara benzer bir şey (öğretim görevlisi projede 2 ders gösterir), ancak zaten daha derinlemesine. Yani, zaten az çok somut şeyler, pratik programlama. Buna paralel olarak herhangi bir teori var, burada hala bilim yapıyorlar.

    Ve iki kurstan sonra, insanlar ilgilendikleri şeyi yapmak için dağılırlar, çünkü bu şey, programlamanın bu tür temellerini oldukça geniş bir şekilde kapsıyor ve şu ana kadar insanlar zaten bilgisayar sistemleriyle hiçbir şekilde uğraşmak istemediklerini anlıyorlar (örneğin, sistem programlamayı sevmiyorlardı), ancak bazı teorik algoritmalar, saymanın karmaşıklığı, bazı yeni şeyler icat etmek, dağıtılmış veya başka bir şeyle uğraşmak istiyorlar. Ya da tam tersine, burada fazla bir şeyleri olmadığını düşünüyorlar ( öğretim görevlisi Python ve C ++ ile ilk dersin satırını işaret ediyor) gitti, sonra ( Öğretim görevlisi, sistem programlama ile üçüncü dersin satırını işaret eder.) - nasıl beğenmezseniz, baytları sayın ve her türlü okuma-yazma kısıtlamasını ayarlayın, akışlar, ileti dizileri ve başka şeyler yapın. Ve buna göre insanlar bir yön seçer ve çalışırlar. Yani, prensip olarak, "ördek yavrusu sendromu" geliştirmemeniz için - Pascal'ınızı ilk gören sizdiniz ve şimdi "Pascal güçtür" diyorsunuz; veya daha ileri düzey - C ++ 'ı gördünüz ve herkes hakkında C ++' nın güçlü olduğu ve diğer her şeyin orada pek iyi olmadığı hakkında konuşmaya başladınız.

    Burada ona daha geniş bir şekilde bakmanız gerekir (öğretim görevlisi tahtadaki dersler listesini gösterir) - bu, özellikle EYO'da seçilen yöntemlerden biridir (yakın zamanda ortaya çıkmıştır, bu nedenle oldukça moderndir). Buluşmanın başka yolları da var. Diğer iyi üniversitelerin biraz farklı bir düzeni ve farklı aksanları vardır. Ama aynı zamanda insanlara sahip oldukları her şeyi tanıtmaya çalışırlar.

    Programcı olarak iş nasıl bulunur?

    Sen ( öğretim görevlisi ders listesini işaret eder) her şeyi yaptı, üniversitede öğrendi, iki yıl daha verimli bir şeyler yaptı ve işe gitmen gerekiyor. Çalışmak için bir şeyi nasıl seçersiniz? Öncelikle, her şeyi bilmelisin, bir yerlerde derinlere inmelisin ve neyi sevdiğini zaten biliyorsun. Doğal olarak neyi sevdiğinizi seçmelisiniz. Çünkü severseniz, çabalarınızı harcarsınız, motivasyonunuz olur ve genel olarak her şey yoluna girer. Çünkü bu sadece parayla ilgili değil, onu sizin için ilginç ve keyifli hale getirmekle ilgili. Peki, havalı bir şirkete girmek istiyorsan, bir iş bul. Şahsen ne tür bir insan görmek isterim? Diyelim ki bana yüz öğrenci geldi - işe iki ya da bir götürmem gerekiyor. Neden geliyorlar, kim olduklarını, ne olduklarını, nasıl olduklarını hiç anlamıyorum? En iyi ihtimalle bana üniversitede aldıkları diplomayı gösterecekler ve ben de “Vay canına! Bu harika bir diploma, ama bu o kadar da havalı değil!” Ve bu arada, yanılıyor olabilirim. Belki kişinin çok fazla boş zamanı vardı ve çok daha iyi öğrendi.

    Ne harika olurdu? İlk olarak, baştan sona yazdığınız bazı açık kaynaklı projeler. Tercihen, verilerin hızlı bir şekilde okunması için bir tür altyapı veya başka bir şey yapıyorsam, o zaman elbette benim için açık kaynaklı bir şey yazmakla ilgilenirim. Bir tür web sitesi yapmadılar, konuyla ilgili bir şeyler yaptılar. Bu benim için neden ilginç? Kodunuza bakabilirim, ne sıklıkta taahhütte bulunduğunuzu görebilirim, kullanıcılardan gelen hatalara, onu kullanan geliştiricilerden gelen hatalara nasıl tepki verdiğinizi görebilirim - her şey kaydedilir, her şeye bakarım ve şöyle düşünürüm: "Vay canına, bu hata iki yıldır kapatılmadı, burada kullanıcıya kaba bir şekilde cevap verdiniz, başka bir şey daha var - onu almıyorum." Yani bu senin kişisel projen.

    Sonra, başka ne harika olurdu? Takım çalışmasını nasıl yaptığınızı görmek isterim. Yani, bir röportaj için bana geliyorsunuz ve şöyle diyorsunuz: “Üniversiteden adamlar ve ben iyi bir başvuru yaptık. Orada bir veritabanı yaptım, orada bir tür mobil uygulama yaptılar ve orada çalışan bir adamımız da vardı, bir tasarımcı kız, bir teknik destek elemanı. Beş kişiydik ve harika bir proje yaptık.” Peki, gerçekten senin projen ne diye bakıyorum, “Seninki ne?” Koda tekrar bakıyorum ve insanlarla bir takımda nasıl çalışılacağını bildiğinizi anlıyorum.

    Bir programcı, garajda, ışıklar kapalı bir yerde tek başına (böyle bir indie) oturan, kimseyle konuşmayan, sakal bırakan ve yazan kişi değildir. Yine de insanlarla bir tür etkileşim var. Örneğin, bazen size küfreden bir patronla (patronlar, onlar böyledir, her zaman kibar değillerdir). Ve insanlarla nasıl çalışılacağını bildiğini görüyorum ve iyi bir ekibin olması beni mutlu ediyor. İyi olmasa bile hiç yoktan iyidir.

    Kişisel olarak başka ne isterim? Kendinizi büyük projelerde gösterdiyseniz. Örneğin, Linux çekirdeğine bir şey işlediniz, sistem programlamayla ilgileniyorsanız, bazı hataları düzelttiniz. Yani, başka birinin kodunu okuyabileceğinizi ve onda bazı değişiklikleri nasıl yapacağınızı bildiğinizi gösterdiler. Bakıyorum: "Ah, gerçekten, karmaşık bir şey buldun ve bazı hataları düzelttin!" Ve bundan gerçekten zevk almaya başlıyorum. Çünkü ben... şey, bilmiyorum... bu yüzden programcım işi bıraktı çünkü rakipleri ona daha yüksek bir maaş teklif etti ve acilen onun yerini dolduracak birine ihtiyacım var - sana. Görünüşe göre sadece sıfırdan yazmışsın ve başka birinin kodunu nasıl okuyup düzenleyeceğini bilmiyorsun ve ben üzülüyorum.

    Ve son olarak, belirli pozisyona bağlı olarak, farklı başka şeyler de vardır. Analist olarak iş başvurusunda bulunuyorsanız, veri analizi problemlerini Kaggle üzerinden çözmenizi isterim. Bazı algoritmik şeylerde bir iş bulursan, spor programcılığında bazı algoritmalar yapmanı isterim. Ve son olarak, meslek hakkında düşünürseniz, mülakatların nasıl gittiğini okursanız, orada bazı insanların büyük memnuniyetsizliklerini dile getirdiğini görürsünüz: “Geldim ve bana hobimin ne olduğunu soruyorlar. Baykuş gibi oturuyorum ve cevap vermiyorum çünkü hobim yok” ve bunu İK'ların yaptığını düşünüyorlar. Aslında, ne kadar arkadaş canlısı ve yeterli olduğunuzu anlamaya çalışıyorlar. Dost canlısı ve yetersizseniz, o zaman ne kadar dahi ve işkolik, harika bilgi birikimine sahip havalı bir uzman olursanız olun, ekibin sizinle çalışması zor olacaktır ve projeyi tek başınıza çıkaramazsınız. Ayrıca çıkarsanız bile şirketin nasıl bir yük ile karşı karşıya olduğunu tahmin edebilirsiniz. Peki yarın ne gelecek ve “Maaşımı 10 kat artırın yoksa sizi bırakacağım” diyeceksiniz. Elbette firmalar böyle bir duruma düşmek istemezler. Bu nedenle, kendi içinde yeterlilik ve iyi niyet geliştirmek, (en azından) bazı mesleki becerileri geliştirmek kadar önemlidir.

    Özetle, ne söylenebilir? Hangi diller iyi hangileri kötü? Pekala, bazı dil grupları içinde, örneğin Ruby, Python ve PHP arasında, ne seçilmeli? Elbette doğru cevap Python'dur, ancak aslında aralarındaki fark, izin verilen hata sayısında, başka bir şeyin miktarındadır -% 5, belki% 10. Yani, zaten PHP'de yazılmış bitmiş bir projeniz varsa, o zaman aklı başında hiç kimse "Python'da her şeyi yeniden yazalım" demez. "Daha fazla PHP geliştiricisi tutalım ve PHP ile yazmaya devam edelim" diyecekler. Tamam, bu iyi bir seçim. Elbette, aniden bir tür proje yazmaya başlarsanız, o zaman şimdi Python'u seçmek akıllıca olabilir. Bununla birlikte, aynı zamanda bağlıdır. Belki piyasada bir sürü ucuz PHP geliştiricisi var ve Python olanlar pahalı ve "Evet, teknoloji daha havalı ama hazır geliştiricilere para kazandıracağım" diye düşünüyorsunuz. Ve her şey yolunda, zaten gelip orada çalışıyorsun.
    Java ve C++ arasında nasıl seçim yapılır? Evet, tam olarak aynı şey oluyor. Yeni bir büyük projeye hangi dilde başlayacağınıza karar verdiğinizde profesyonel alanınızda bilgi sahibi olacağınızı ve doğru seçimi yapabileceğinizi düşünüyorum. Şu anda henüz bu seçimi yapmak zorunda değilsiniz ve bu yüzden size zevk aldığınız şeyi yapmanızı tavsiye ediyorum.

    Temel bilgiler, dediğim gibi, programlamanın temelleri (işlev nedir, if'ler, for'lar, diziler, başka şeyler nelerdir) aşağı yukarı herhangi bir dilde öğrenilebilir. Örneğin, C ++ 'da, birçok şey ona benzer olduğundan ve içindeki ayrıntılar (bu düzeyde) yazmak için en az ve en az gereksiz harflerdir. Pekala, o zaman bazı karmaşık mimari şeyleri öğrendiğinizde öğreneceksiniz ve bunun için fazla endişelenmenize gerek yok. Yani, asıl mesele denemek, neyi sevdiğinizi aramak ve zaten sabah saat 4 olduğunu anladığınızda ve eğlenmek için oturup yazdığınız için, çünkü bundan hoşlanıyorsunuz - muhtemelen şu anda kendinizinkini bulduğunuz açıktır.

      Programlama dillerinin listeleri Kategoriye göre Kronolojik Şecere Kategorilere göre gruplandırılmış programlama dillerinin listesi. Bazı diller birden fazla kategoriye giriyordu. İçindekiler ... Vikipedi

      Programlama dillerinin listeleri Kategoriye göre Kronolojik Şecere Programlama dillerinin şecere listesi verilmektedir. Diller, oluşumunda güçlü bir etkiye sahip olan önceki dillere göre sınıflandırılır ... Wikipedia

      İçindekiler 1 Üreticiye veya platforma göre 1.1 Flash 1.2 Java 1.3 Microsof ... Wikipedia

      Programlama dillerinin listeleri Kategoriye Göre Programlama dillerinin Kronolojik Şecere Zaman Çizelgesi, programlama dillerinin kronolojik olarak sıralanmış bir listesidir. İçindekiler ... Vikipedi

      Bu makale wikileştirilmelidir. Lütfen makaleleri formatlama kurallarına göre formatlayınız. Sözleşmeler ... Vikipedi

      Bu sayfa bir bilgi listesidir. .NET programlama dilleri (CLI etkin diller veya CLI dilleri) Bilgisayar programlama dilleri, Comm gereksinimlerini karşılayan kitaplıklar ve programlar oluşturmak için kullanılır ... Wikipedia

      Ana madde: Metin düzenleyici Windows metin düzenleyicilerinin listesi ve karşılaştırma tablosu. İçindekiler 1 Tanınmış metin editörlerinin karşılaştırma tablosu ... Wikipedia

      C# programlama dili günümüzün en popüler programlama dillerinden biridir. Paint.NET açık kaynaklı raster grafik yazılımı SharpDevelop C# için açık kaynaklı IDE, Visual Basic .NET (VB.NET), Boo ... Wikipedia

      Bu, tamamen özgür yazılımdan yapılmış benzer bir işletim sistemi için GNU UNIX projesinin bir parçası olarak Özgür Yazılım Vakfı tarafından geliştirilen yazılımların bir listesidir. Bu paketlerin çoğu aynı zamanda ... ... Wikipedia

      Bu makale veya bölümün gözden geçirilmesi gerekiyor. Lütfen makaleyi makale yazım kurallarına uygun olarak geliştirin ... Wikipedia

    Kitabın

    • Çocuklar için Piton. Programlama Eğitimi, Jason Briggs. Kitap hakkında Bu kitap, günümüzün en popüler programlama dillerinden biri olan Python hakkında bir öğreticidir. En basit adımlardan başlayarak adım adım yazacaksınız…
    • Çocuklar için JavaScript. Programlama Eğitimi, Nick Morgan. Kitap hakkında Bu kitap, programlamaya dalmanıza ve kolaylıkla JavaScipt'te ustalaşmanıza olanak sağlayacaktır. Bazı gerçek oyunlar yazacaksınız - haritada hazine avı, "Darağacı" ve "Yılan". Her…

    Hangi programlama dilini öğrenmeye başlayacağınızı bulmaya çalışırken, muhtemelen "yüksek seviye" ve "düşük seviye" terimleriyle karşılaşacaksınız. İnsanlar sürekli yüksek ve düşük seviyeli programlama dillerinden bahsediyor. Ama bu tam olarak ne anlama geliyor? Ve kodlamayı öğrenmek ne anlama geliyor? Her birinin tanımlarıyla başlayalım.


    Yüksek ve Düşük Seviye Programlama Dilleri

    Bu yazıda "yüksek" ve "düşük seviyeli" dillerden bahsedeceğim. Ancak bunu belirlemek için özel bir kriter yoktur. Sadece bunun bakış açınıza çok bağlı olduğunu unutmayın. Bir C programcısıysanız, Java oldukça üst düzey görünebilir. Ruby'ye alışkınsanız, Java düşük seviyeli bir dil gibi görünebilir.

    Makine kodu ve düşük seviyeli diller

    Bir dil ister yüksek seviyeli ister düşük seviyeli (veya ikisinin arasında bir yerde) kabul edilsin, bu soyutlama ile ilgilidir. Makine kodunun bir soyutlaması yoktur - bilgisayara iletilen bireysel talimatları içerir. Ve makineler yalnızca sayılarla uğraştığı için ikili olarak temsil edilirler (bazen ondalık veya onaltılık gösterimde yazılmalarına rağmen).

    İşte bir yerel kod örneği:

    Makine kodunda işlemler tam olarak belirtilmelidir. Örneğin, bir bilgi parçasının bellekten alınması gerekiyorsa, makine kodunun bilgisayara onu bellekte nerede bulacağını söylemesi gerekir.

    Doğrudan makine koduna yazmak mümkündür, ancak çok zordur.

    Düşük seviyeli programlama dilleri, makine kodlarına biraz soyutlama katar. Bu soyutlama, insan tarafından daha okunabilir olan bildirimlerin arkasında belirli makine kodu yönergelerini gizler. Assembly dilleri, makine kodunun yanında en düşük seviyeli dillerdir.

    Makine kodunda "10110000 01100001" gibi bir şey yazabilirsiniz, ancak montaj dili bunu "MOV AL, 61h" olarak basitleştirebilir. Assembly dilinde yazılanlar ile makineye verilen komutlar arasında hala neredeyse bire bir örtüşme var.

    Daha popüler programlama dillerine geçerek C gibi bir şey elde edersiniz. Bu dil, Assembly dili kadar düşük seviyeli olmasa da, C'de yazılanlar ile makine kodu arasında hala güçlü bir karşılık vardır. C ile yazılmış çoğu işlem, az sayıda makine kodu talimatı ile doldurulabilir.

    Üst düzey programlama dilleri

    Daha düşük seviyeli diller gibi, daha yüksek seviyeler çok çeşitli soyutlamaları kapsar. Java gibi (birçoğunun orta düzey programlama dilleri olarak kabul ettiği) bazı diller, bilgisayarın belleği ve verileri nasıl yönettiği konusunda size hala çok fazla kontrol sağlar.

    Ruby ve Python gibi diğerleri çok soyuttur. Alt düzey işlevlere daha az erişim sağlarlar, ancak sözdizimini okumak ve yazmak çok daha kolaydır. Özellikleri miras alan sınıflarda gruplandırabilirsiniz, böylece bunları yalnızca bir kez bildirmeniz gerekir.

    Değişkenler, nesneler, alt programlar ve döngüler, üst düzey dillerin önemli parçalarıdır. Bu kavramlar ve daha fazlası, makineye pek çok şeyi kısa ve öz ifadelerle anlatmanıza yardımcı olacaktır.

    Bir montaj dilinin talimatları ile makine kodu talimatları arasında neredeyse tekdüze bir yazışma varsa, daha yüksek seviyeli bir dil, tek bir kod satırıyla düzinelerce talimat gönderebilir.

    "Üst düzey programlama dillerinin", montaj dilinden daha soyut olan her şeyi içerebileceğini not etmek önemlidir.

    Hangi dili öğrenmeli: düşük veya yüksek seviye?

    Bu kesinlikle yeni ve acemi programcılar arasında yaygın bir sorudur. Hangi programlama dillerini öğrenmek daha iyidir: yüksek veya düşük seviye? Birçok programlama sorusunda olduğu gibi üst seviye ve düşük seviyeli programlama dilleri sorusu o kadar basit değildir.

    Her iki dil türünün de önemli avantajları vardır. Düşük seviyeli diller, bilgisayar tarafından çok az yorum gerektirdiklerinden, genellikle çok hızlıdırlar. Ve programcılara veri depolama, bellek ve alma üzerinde çok fazla kontrol sağlarlar.

    Bununla birlikte, üst düzey diller sezgiseldir ve programcıların çok daha verimli kod yazmasına olanak tanır. Bir kodlayıcının hasara neden olabilecek kötü yazılmış komutlar vermesini engelleyen daha fazla koruma bulunduğundan, bu diller ayrıca "daha güvenli" olarak kabul edilir. Ancak programcılara düşük seviyeli süreçler üzerinde aynı kontrolü vermezler.

    Bunu göz önünde bulundurarak, düşükten yükseğe doğru bir ölçekte popüler dillerin bir listesi:

    • JavaScript
    • Piton

    Tabii ki, bu biraz öznel. Ve mevcut dillerin yalnızca küçük bir kısmını içerir.

    Fakat bu size ilgilendiğiniz dillerin hangi seviyede olduğu hakkında bir fikir vermelidir.

    Ne yapmak istiyorsun?

    Hangi dili öğreneceğinize karar verirken ilk sorunuz şu olmalıdır: Ne programlamak istiyorsunuz?

    İşletim sistemlerini, çekirdekleri veya en yüksek hızda çalışması için gerekenleri programlamak istiyorsanız, daha düşük seviyeli bir dil iyi bir seçim olabilir. Windows, OS X ve Linux'un çoğu, C++ ve Objective-C gibi C ve C'den türetilen dillerde yazılmıştır.

    Birçok modern uygulama, daha üst düzey dillerde ve hatta etki alanına özgü dillerde yazılır. HTML5 her geçen gün daha da güçleniyor olsa da, Python ve Ruby özellikle web uygulamaları için popülerdir. Swift, C#, JavaScript ve SQL gibi dillerin kendi güçlü ve zayıf yönleri vardır.

    Geçenlerde bir programlama forumunda bir konu okudum ve ilginç bir öneriyle karşılaştım: aynı anda iki seviyeyi de çalışın. Daha yüksek seviyeli bir dili daha verimli hale getiren soyutlama türleri hakkında daha derin bir anlayış kazanacaksınız.

    Elbette aynı anda iki dil öğrenmek kolay değil, bu yüzden onları biraz genişletmek isteyebilirsiniz. Ve birbirine en çok benzeyen iki dili seçmek yardımcı olabilir.

    Yine, daha önce bahsettiğim şeye geri döndük: yapmak istediğiniz şeye göre bir dil seçin. İnsanların kendi alanlarında hangi dilleri kullandıklarını öğrenmek için biraz araştırma yapın. Ardından, yüksek ve düşük seviyeli bir dil seçmek için bu bilgileri kullanın ve bunları öğrenmeye başlayın.

    Yakında paralellikleri göreceksiniz ve programlamanın nasıl çalıştığına dair çok daha derin bir anlayış kazanacaksınız.

    Sonuca odaklan, araçlara değil

    Bir programlama dili seçmek için kullanabileceğiniz birçok kriter vardır. Kriterlerden biri yüksek ve düşük seviyedir. Ancak hemen hemen her durumda, kullanmanız gereken kriter programlamak istediğiniz şeydir.

    Projeniz düşük seviyeli bir dilden faydalanabilir. Veya yüksek düzeyde çok daha verimli olabilir. İş için doğru aracı kendiniz seçmelisiniz. Hedefinize odaklanın ve her seferinde doğru dili seçin.

    Yüksek ve düşük seviyeli dillerle deneyiminiz var mı? Birini diğerine tercih ediyor musunuz? Düşüncelerinizi aşağıdaki yorumlarda paylaşın!