• Özet: Programlama dilleri kavramı ve türleri. Programlama dillerinin listesi. Düşük ve yüksek seviyeli programlama dilleri

    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

    Bilgisayar teknolojisinin gelişimi durmadığı için yöntemler ve programlama dilleri sürekli geliştirilmektedir. Modern bilgisayar alanında hangi dillerin var olduğunu ve bunların sınıflandırılmasını düşünün.

    Genel bilgi

    Programlama dillerinin listesi o kadar geniş ve çeşitlidir ki, onu tamamen ortaya koymak neredeyse imkansız bir iştir. Tüm diller arasında üç ana alt grup ayırt edilebilir:

    • makine (düşük seviyeli programlama dilleri);
    • makine odaklı (montajcılar);
    • makineden bağımsız (yüksek seviye);

    Modern yazılım geliştiricileri arasında aşağıdaki ana programlama dilleri en popüler olanlardır. Liste, azalan popülerlik sırasına göre:

    1. Java.
    2. HTML.
    3. Visual Basic.
    4. Delphi.

    Bu programlama dilleri listesi tam olmaktan uzaktır, ancak bunlar, bir iş başvurusunda bulunurken bir programcının bilgisi gerekebilecek en popüler dillerdir. Hepsi üst düzey programlama dilleridir.

    programlamanın temelleri

    Düşük seviyeli programlama dilleri, işlemcinin türünün ve yeteneklerinin dikkate alınmasını gerektiren dillerdir. Bu tür programlama dillerinin operatörleri ve çalışma yöntemleri, kişisel bir bilgisayarın bellek yapısı ve işlemcinin buna nasıl eriştiği hakkında bilgi gerektirecek kadar makine koduna yakındır.

    Farklı düşük seviyeli programlama dillerini adlandırmak zordur. Liste yine de tek bir baskın dile indirgenecek - birleştirici. Assembler, program kodlarını makine koduna yakın notasyonlarda oluşturmanıza izin verdiğinden, özellikle işletim sistemleri, aygıt sürücüleri gibi sistem yazılımları yazılırken ve mikro devreler için kontrol kodları programlanırken kullanılır.

    Bu tür programlama dillerinin dezavantajı, programların belirli bir cihazda belirli görevleri yerine getirmek için yazılması ve başka bir işlemciye aktarılırsa yürütülmesinin imkansız olmasıdır.

    Uygulama geliştirme

    Özel uygulamalar oluşturmak ve ayrıca özel yazılımlar geliştirmek ve uygulamak için kullanılan programlama dillerinin listesi binlerce girdiye sahiptir. Anladığınız gibi, böyle bir çeşitlilik, belirli bir dilin belirli sorunları çözmek için uygun olmasından kaynaklanmaktadır.

    Bu programlama dilleri ayrı bir grupta tanımlanmış olmasına rağmen, yürütmeleri makine kodunda gerçekleşir. Bitmiş programı satır satır yürütmek ve onu özel programlara çevirmek için tercümanlar kullanılır. Program kodunun bir dilden diğerine çevirisi komutlar yürütülmeden gerçekleştirilirse, derleyici programlar buna dahil olur. Genel olarak, yazılı programları bir resmi programlama dilinden diğerine çevirmek için tasarlanmış programlara çevirmen denir.

    Üst düzey programlama dillerine daha yakından bakalım. Bir liste derlemeyeceğiz, en popüler olanların her biri hakkında daha ayrıntılı olarak açıklayacağız.

    SQL

    Özel bir programlama dili, öncelikle veritabanı yönetim sistemleri ve bunların programlanmasıyla çalışmak için tasarlanmıştır. SQL, "uzmanlaşmış" olarak çevrilir. DBMS pazarı son on yıllarda katlanarak büyüdüğü için, bu dilin popülaritesi şaşırtıcı değil.

    Bu dilin geleceği hakkında farklı görüşler var. İlişkisel veritabanları oluşturma teknolojisinin en iyi durumda olduğu kesin olarak kabul ediliyor, ancak zamanı daralıyor. Artan işlenen veri hacmiyle bağlantılı olarak geliştirme ihtiyacı, uzmanları, gelecekte insanlığın yalnızca ilişkisel teknolojilerden ilişki sonrası teknolojilere geçmesi gerektiği, ancak mevcut veri bankalarıyla uyumluluğu sürdürmeyi hesaba katması gerektiği fikrine yönlendiriyor.

    javascript

    Üst düzey programlama dilleri arasında haklı olarak ikinci sırada yer alır. Öğrenmesi kolay, kullanımı kolay. Progenitöre kıyasla programlamaya artan uyum, dünya çapında milyonlarca insanın bu dille çalışmasına yol açar. C++ tabanlı nesne yönelimli bir dil, özel ortamlarda büyük bilgi akışlarını işleyebilen ve bitmiş ürünün uygulama ortamının özelliklerini dikkate alan programlar ve uygulamalar oluşturmak için uyarlanmıştır.

    Java teknolojisi, Wi-fi aracılığıyla bir telefon ağına bağlanmaktan süper bilgisayarlara kadar çeşitli kalibrelerdeki sistemleri birbirine bağlayabilen, işletmelerin ve şirketlerin altyapısını sınırsız miktarda artırmaya izin veren temeldir.

    xml

    HTML'nin soyundan gelen bu teknoloji, genişletilebilir bir biçimlendirme dilidir. Belgeleri yorumlamak için uyarlanmıştır. Belgelerde karmaşık dönüşümler ve değişiklikler gerçekleştirir. XML dili, İnternet üzerinden çeşitli ilişkisel veritabanlarıyla çalışırken verileri aktarmak ve geçici olarak depolamak için kullanılır.

    XML, kurumsal ağlar oluşturmak için temel teknoloji olduğunu iddia edebileceği noktaya çoktan ulaştı.

    Rusça Programlama

    En popüler programlama dilleri İngilizce kelime dağarcığı kullanır. Ancak bunların dışında Rusça programlama dilleri de bulunmaktadır. Rusça'daki liste küçüktür ve kullanıldıkları konu alanı çok özeldir. Bazı örnekler verelim.

    • 1C: Kurumsal. Organizasyonu tüm faaliyet alanlarında yönetmek için tasarlanmış bütün bir sistem. Genellikle iş arama ilanlarında "1C Programcısı" bulabilirsiniz.
    • Fiil. İngilizce Pascal'ın bir benzeri.
    • Robik. Çocuklara programlamanın temellerini öğretmek için tasarlanmış özel bir programlama dili.
    • Meç. Prosedür tabanlı dil.

    Gördüğünüz gibi, programlama dilleri listesi o kadar geniş ve çeşitlidir ki, herhangi bir sınıflandırma ve listenin kapsamına giremez. Programlamayı amatör veya profesyonel düzeyde almaya karar verirseniz, programcının yalnızca bilgi değil, aynı zamanda fantezi, hayal gücü, sezgi ve hatta biraz şans gerektiren yaratıcı bir meslek olduğunu unutmayın.

    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 ortak yerler 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.

    3. Bilgisayarda problem çözme aşamaları.

    VT'nin en etkili uygulaması, bilimsel araştırmalarda ve mühendislik hesaplamalarında emek yoğun hesaplamalar yaparken bulundu. Bilgisayarda bir problem çözerken, asıl rol yine bir kişiye aittir. Makine sadece geliştirilen programa göre görevlerini yerine getirmektedir. Problem çözme süreci aşağıda listelenen adımlara bölünürse, insan ve makinenin rolünü anlamak kolaydır.

    Sorunun formülasyonu. Bu aşama, sorunun anlamlı (fiziksel) formülasyonundan ve nihai çözümlerin belirlenmesinden oluşur.

    Matematiksel bir modelin oluşturulması. Model, fiziksel sürecin temel yasalarını doğru (yeterince) tanımlamalıdır. Mevcut modellerden bir matematiksel model oluşturmak veya seçmek, problemin derinlemesine anlaşılmasını ve matematiğin ilgili bölümleri hakkında bilgi sahibi olmayı gerektirir.

    Dünya Kupası gelişimi. Bilgisayar yalnızca en basit işlemleri gerçekleştirebildiğinden, matematiksel bir formülasyonda bile problemin ifadesini "anlamaz". Bunu çözmek için, sorunu bir hesaplama algoritmasına indirgemeyi mümkün kılan sayısal bir yöntem bulunmalıdır. Her özel durumda, önceden geliştirilmiş standart çözümlerden uygun çözümü seçmek gerekir.

    Algoritma geliştirme. Bir problemi çözme süreci (hesaplama süreci), nihai sonuca götüren temel aritmetik ve mantıksal işlemlerin bir dizisi olarak yazılır ve problemi çözmek için algoritma olarak adlandırılır.

    Programlama. Sorunu çözmek için algoritma, makine tarafından anlaşılabilen bir dilde, kesin olarak tanımlanmış bir işlem dizisi - bir program şeklinde yazılmıştır. İşlem genellikle bazı ara dillerin yardımıyla yapılır ve çevirisi makinenin kendisi ve sistemi tarafından gerçekleştirilir.

    Program hata ayıklama. Derlenen program çeşitli türlerde hatalar, yanlışlıklar ve eksiklikler içerir. Hata ayıklama, program kontrolünü, hataların teşhisini (içeriğin aranması ve belirlenmesi) ve bunların ortadan kaldırılmasını içerir. Program, sonuçların güvenilirliğinden emin olmak için kontrol (test) görevlerini çözerek test edilir.

    Hesaplamalar yapmak. Bu aşamada hesaplamalar için başlangıç ​​verileri hazırlanır ve hata giderilmiş programa göre hesaplama yapılır. aynı zamanda, sonuçların işlenmesindeki el emeğini azaltmak için, sonuçların insanların anlayabileceği bir biçimde metinsel ve grafik bilgi biçiminde uygun şekilde verilmesi yaygın olarak kullanılabilir.

    Sonuçların analizi. Hesaplama sonuçları dikkatlice analiz edilir ve bilimsel ve teknik belgeler düzenlenir.

    4. 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 belirtir. 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

    5. programlama dilleri nelerdir

    1.1 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.

    1.2 Algol

    Fortran'dan sonra, 1958-1960'da Algol dili (Algol-58, Algol-60) ortaya çıktı (ALGOrithmicLanguage'den İngilizce ALGOL - algoritmik dil). Algol, 1964-1968 - Algol-68'de geliştirildi. Algol, Avrupalı ​​ve Amerikalı bilim adamlarını içeren bir komite tarafından geliştirildi. Üst düzey dillere aittir ve cebirsel formülleri kolayca program komutlarına çevirmenizi sağlar. 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 dilinin programlama için kullanılması neredeyse sona erdiğinde bile, algoritmaları yayınlamak için resmi dil olmaya devam etti.

    1.3 Kobol

    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 tasarlandı. 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ı.

    1.4 Lisp

    Massachusetts Institute of Technology, Cobol (1959 - 1960) ile neredeyse aynı anda Lisp dilini yarattı (eng. LIStProcessing'den LISP - liste işleme). Lisp, bir programın, ayrıca dilin ana veri yapısı olan doğrusal sembol listeleri sistemi tarafından temsil edilmesine dayanır. Lisp, Fortran'dan sonra ikinci en eski üst düzey programlama dili olarak kabul edilir. Bu dil, sembolik bilgileri işlemek için yaygın olarak kullanılır ve insan beyninin faaliyetlerini taklit eden yazılımlar oluşturmak için kullanılır.

    Herhangi bir Lisp programı diziden oluşur ifade(formlar). Programın sonucu bu ifadeleri değerlendirmektir. Tüm ifadeler şu şekilde yazılır: listeler- Lisp'in ana yapılarından biri, böylece dilin kendisi aracılığıyla kolayca oluşturulabilirler. Bu, diğer programları veya makroları değiştiren programlar oluşturmanıza ve dilin yeteneklerini önemli ölçüde genişletmenize olanak tanır.

    Lisp programının ana anlamı, karakter uzayındaki "yaşam" dır: hareket, yaratıcılık, ezberleme, yeni dünyalar yaratma vb. Beynin bir metaforu, bir sembol, bir sinyal metaforu olarak Lisp: "Beyin tarafından sinyallerin biyolojik analizi, bir dış faktör olarak nasıl gerçekleşir - vücut için tahriş edici olan fiziksel ve kimyasal etki, döner. bir kişinin veya hayvanın tüm davranışını belirleyen, biyolojik olarak anlamlı, genellikle hayati bir sinyale ve farklı sinyallerin pozitif, negatif ve kayıtsız, kayıtsız olarak nasıl ayrıldığı. Sinyal zaten bütünleştirici bir kavramdır. Bu bir tanımlamadır. ortak bir tarih ve nedensel ilişkilerle birbirine bağlı bir grubun işareti, karmaşık uyaranlar.Bu karmaşık uyaranlar sisteminde, sinyal uyaranın kendisi de kurucu bir unsurdur ve diğer koşullar altında rolü, kompleksten başka bir uyarana ait olabilir. bir hayvanın veya bir kişinin tüm geçmiş deneyimi, sinyalde yoğunlaşmıştır.

    1.5 TEMEL

    60'ların ortalarında (1963), Dartmouth Koleji (ABD) BASIC dilini yarattı (İng. Beginner's All amaçlı Instruction Code'dan BASIC - yeni başlayanlar için çok amaçlı sembolik bir talimat kodu). Zamanla, diğer lehçeler ortaya çıkmaya başladıkça, bu "orijinal" lehçe Dartmouth BASIC olarak bilinmeye başlandı. Dil, kısmen Fortran II'ye ve kısmen Algol-60'a dayanıyordu, zaman paylaşımına ve daha sonra metin işlemeye ve matris aritmetiğine uygun hale getirmek için eklemeler yapıldı. BASIC başlangıçta birden fazla terminal desteğiyle GE-265 ana bilgisayarında uygulandı. Popüler inanışın aksine, kurulduğu sırada derlenmiş bir dildi.

    BASIC, öğrencilerin zaman paylaşımlı terminaller kullanarak programlar yazabilmeleri için tasarlanmıştır. Eski dillerin karmaşıklığıyla ilgili sorunlara bir çözüm olarak yaratılmıştır. Daha "basit" kullanıcılar için tasarlanmıştı, programların hızıyla çok fazla ilgilenmiyordu, sadece sorunlarını çözmek için bir bilgisayar kullanma becerisiyle ilgileniyordu. BASIC dilinin basitliği nedeniyle, birçok acemi programcı programlama yolculuğuna onunla başlar.

    1.6 kale

    60'ların sonunda - 70'lerin başında, Forth dili ortaya çıktı (İngilizce DÖRDÜNCÜ - dördüncü). Bu dil, yazarı Charles Moore'un Arizona Gözlemevi'nin radyo teleskopunu kontrol etmek için tasarlanmış bir program yazmasının ardından çeşitli sistemleri kontrol etme görevlerinde kullanılmaya başlandı.

    Etkileşim, esneklik ve geliştirme kolaylığı gibi bir dizi özellik, Forth'u uygulamalı araştırma ve araçların oluşturulmasında çok çekici ve etkili bir dil haline getirir. Gömülü kontrol sistemleri, bu dil için bariz uygulama alanlarıdır. Ayrıca, çeşitli işletim sistemlerini çalıştıran programlama bilgisayarlarında da uygulama bulur.

    1.7 Pascal

    1972'de ortaya çıkan Pascal dili, adını dünyanın ilk aritmetik makinesinin mucidi olan 17. yüzyılın büyük Fransız matematikçisi Blaise Pascal'dan almıştır. Bu dil, İsviçreli bilgisayar bilimcisi Niklaus Wirth tarafından programlama yöntemlerini öğretmek için bir dil olarak oluşturuldu. Pascal genel amaçlı bir programlama dilidir.

    Dilin özellikleri, katı yazım ve yapısal (prosedürel) programlama araçlarının mevcudiyetidir. Pascal, bu tür ilk dillerden biriydi. N. Wirth'e göre dil, programlama disiplinine katkıda bulunmalıdır, bu nedenle, güçlü yazımla birlikte Pascal'da olası sözdizimsel belirsizlikler en aza indirilir ve sözdiziminin kendisi, dille ilk tanışmada bile sezgiseldir.

    Pascal dili, yalnızca bir programın nasıl doğru yazılacağını değil, aynı zamanda bir sorunu çözmek için doğru bir yöntemin nasıl geliştirileceğini, problemde kullanılan verileri temsil etmenin ve düzenlemenin yollarını seçmeyi de öğretir. 1983'ten beri Pascal dili, ABD orta öğretim okullarında bilgisayar bilimleri müfredatına dahil edilmiştir.

    1.8 Ada

    1983 yılında, ABD Savunma Bakanlığı'nın himayesinde Ada dili oluşturuldu. Dil, derleme aşamasında birçok hatanın tespit edilebilmesi açısından dikkat çekicidir. Ek olarak, programlamanın genellikle işletim sistemine bırakılan birçok yönü (paralellik, istisna işleme) desteklenir. 1995 yılında, önceki sürümü geliştiren, ona nesne yönelimi ekleyen ve bazı yanlışlıkları düzelten dil standardı Ada 95 kabul edildi. Bu dillerin ikisi de askeri ve diğer büyük ölçekli projeler (havacılık, demiryolu taşımacılığı) dışında yaygın olarak kullanılmamaktadır. Ana sebep, dile hakim olmanın zorluğu ve oldukça hantal söz dizimidir.

    Ada'nın hemen öncülleri Pascal ve Euclid, Lis, Mesa, Modula ve Sue gibi türevleridir. ALGOL-68, Simula, CLU ve Alphard'dan bazı kavramlar kullanılmıştır.

    Ada'nın geliştiricileri öncelikle şunlarla ilgileniyorlardı:

    Programların güvenilirliği ve operasyonel nitelikleri;

    Bir tür insan faaliyeti olarak programlama;

    yeterlik.

    Masada. 1 nesne yaklaşımı açısından Ada dilinin temel özelliklerini göstermektedir.

    tablo 1

    1.9 Xi

    Şu anda, C dili (C, İngiliz alfabesinin harfidir) programcılar arasında popülerdir. C dili, BCPL ve B olmak üzere iki dilden gelmektedir. 1967'de Martin Richards, BCPL'yi sistem yazılımı ve derleyiciler yazmak için bir dil olarak geliştirdi. 1970 yılında Ken Thompson, UNIX işletim sisteminin ilk sürümlerini bir DEC PDP-7 bilgisayarında oluşturmak için B'yi kullandı. Hem BCPL'de hem de B'de değişkenler türlere ayrılmamıştı - her veri değeri bellekte bir kelime kaplıyordu ve örneğin tamsayılar ile gerçek sayıları ayırt etme sorumluluğu tamamen programcının omuzlarına düşüyordu. B) Bell Laboratories'den Dennis Ritchie tarafından ve ilk olarak 1972'de bir DEC PDP-11 bilgisayarında uygulandı. C, UNIX işletim sisteminin dili olarak ünlendi. Bugün, neredeyse tüm büyük işletim sistemleri C veya C++ ile yazılmıştır. Yirmi yıl sonra, C çoğu bilgisayarda mevcuttur. Donanımdan bağımsızdır.70'lerin sonlarında C, "geleneksel C" dediğimiz şeye dönüştü. 1983'te Amerikan Ulusal Bilgisayar ve Bilgi İşleme Standartları Komitesi bu dil için tek bir standart oluşturdu. Zengin olanaklara sahip olan bu dil, modern kişisel bilgisayarların tüm özelliklerini kullanan esnek programlar yazmanıza olanak tanır.

    1.10 Önsöz

    Geleceğin dili olarak kabul edilen başka bir dil, 70'lerin başında Marsilya Üniversitesi'nden bir grup uzman tarafından yaratıldı. Bu Prolog dilidir. Adını "MANTIK dilinde Programlama" kelimesinden almıştır. Bu dil, matematiksel mantık yasalarına dayanmaktadır. Lisp dili gibi, Prolog da esas olarak insan beyninin yazılım simülasyonu alanındaki araştırmalarda kullanılır. Yukarıda açıklanan dillerin aksine bu dil algoritmik değildir. Sözde aittir tanımlayıcı(İngilizce'den tanımlayıcı - tanımlayıcı) - tanımlayıcı diller. Tanımlayıcı bir dil, programcının bir görevin tüm aşamalarını geliştirmesini gerektirmez. Bunun yerine, böyle bir dilin kurallarına göre programcı, çözülmekte olan soruna karşılık gelen veritabanını ve bu veritabanındaki verileri kullanarak yanıtlanması gereken soru dizisini tanımlamalıdır.

    Son yıllarda, programlama ortaya çıktı ve önemli bir gelişme kaydetti. nesne odaklı bir yaklaşım. Bu, dünyanın gerçek resmini taklit eden bir programlama yöntemidir: bir sorunu çözmek için kullanılan bilgi, etkileşim halindeki bir dizi nesne olarak temsil edilir. Her nesnenin kendine has özellikleri ve davranışları vardır. Nesnelerin etkileşimi, mesaj geçişi kullanılarak gerçekleştirilir: her nesne, diğer nesnelerden mesajlar alabilir, bilgileri depolayabilir ve belirli bir şekilde işleyebilir ve karşılığında mesajlar gönderebilir. Tıpkı gerçek dünyada olduğu gibi, nesneler özelliklerini ve davranışlarını bir arada tutar ve bazılarını üst nesnelerden devralır.

    Nesne yönelimli ideoloji, işletim sistemleri de dahil olmak üzere tüm modern yazılım ürünlerinde kullanılmaktadır.

    İlk nesne yönelimli dil simülasyon -67 çeşitli cihaz ve mekanizmaların çalışmasını simüle etmenin bir yolu olarak yaratılmıştır. Modern programlama dillerinin çoğu nesne yönelimlidir. Bunların arasında dilin en son sürümleri var. Turbo - Pascal , C ++, Ada ve diğerleri.

    Şu anda yaygın olarak kullanılan sistemler görsel programlama Görsel Temel , Görsel C ++, Delfi ve diğerleri. Basit ve kullanışlı bir kullanıcı arabirimi ile karmaşık uygulama paketleri oluşturmanıza olanak tanırlar.

    1.11 Java

    1995'ten beri, bilgisayar ağlarına ve her şeyden önce İnternet'e yönelik yeni bir nesne yönelimli programlama dili olan Java yaygınlaştı. Bu dilin sözdizimi C++ ile benzerdir, ancak iki dilin çok az ortak noktası vardır. Java, yorumlanmış bir dildir: dahili bir temsili (bayt kodu) ve bu temsil için çoğu platformda halihazırda uygulanan bir yorumlayıcıya sahiptir. Tercüman, Java dilinde yazılmış programların hata ayıklamasını basitleştirir, yeni platformlara taşınabilirliklerini ve yeni ortamlara uyarlanabilirliklerini sağlar. Java dilinde yazılmış programların, yeni platformda bulunan diğer programlar ve dosyalar üzerindeki etkisini ortadan kaldırmanıza ve böylece bu programların yürütülmesinin güvenliğini sağlamanıza olanak tanır. Java dilinin bu özellikleri, onun ağlar üzerinden (özellikle İnternet üzerinden) dağıtılan programlar için ana programlama dili olarak kullanılmasını mümkün kılar.

    1.12 Pascal Nesnesi

    Object Pascal, Pascal dilinin yaratıcısı Niklaus Wirth ile işbirliği içinde Apple Computer çalışanları (bazıları Smalltalk projesinin üyeleri) tarafından yaratıldı. Object Pascal, 1986'dan beri bilinmektedir ve Apple'ın Macintosh bilgisayarları için geliştirme ortamı olan Macintosh Programmer's Workshop'a (MPW) dahil edilen ilk nesne yönelimli programlama dilidir.

    Bu dilde sınıf yöntemleri, sınıf değişkenleri, çoklu kalıtım ve metasınıflar yoktur. Bu mekanizmalar, yeni başlayan "nesne" programcıları için dili öğrenmeyi kolaylaştırmak amacıyla kasıtlı olarak hariç tutulmuştur.

    Masada. 2, Object Pascal'ın genel özelliklerini göstermektedir.

    Tablo 2. Pascal Nesnesi.

    Son yıllarda Borland'ın Delphi sistemi sayesinde bu dil oldukça popüler hale geldi.

    1.13 Görsel nesne yönelimli tasarım sistemi Delphi.

    Delphi'nin ortaya çıkışı birçok bilgisayar kullanıcısı tarafından fark edilmedi. Bu yeni Borland ürününün olanaklarını araştıran uzmanların değerlendirmeleri genellikle coşkulu bir tonda resmedilir. Delphi'nin ana avantajı, görsel programlama fikirlerinin burada uygulanmasıdır. Görsel programlama ortamı, bir program oluşturma sürecini, geniş bir grafik ve yapısal ilkel kümesinden hoş ve anlaşılması kolay bir uygulama yapısına dönüştürür.

    Delphi sistemi, özellikle aşağıdakiler gibi birçok sorunu çözmenize olanak tanır:

    · Çeşitli türlerde eksiksiz Windows uygulamaları oluşturun: tamamen hesaplamalı ve mantıksal uygulamalardan grafik ve multimedyaya kadar.

    · Herhangi bir uygulama için hızlı bir şekilde (acemi programcılar için bile) profesyonel görünümlü bir pencere arabirimi oluşturun.

    Yerel ve uzak veritabanlarıyla çalışmak için güçlü sistemler oluşturun

    · Uygulamalarınız ve daha fazlası için yardım sistemleri (.hlp dosyaları) oluşturun. diğerleri

    Delphi son derece hızlı büyüyen bir sistemdir. İlk sürüm - Delphi 1.0, Şubat 1995'te yayınlandı. Ardından her yıl yeni sürümler yayınlandı.

    Delphi'nin sonraki her sürümü bir öncekini tamamlıyordu.Delphi'nin çoğu sürümü birkaç sürümde mevcuttur: Standart - standart, Profesyonel - profesyonel, İstemci / Sunucu - istemci / sunucu, Kurumsal - konu alanlarının veritabanlarının geliştirilmesi. Seçenekler, temel olarak veritabanı yönetim sistemlerine farklı erişim düzeylerinde farklılık gösterir. Son seçenekler, İstemci/Sunucu ve Kurumsal, bu açıdan en güçlü olanlardır.

    Delphi, birkaç temel teknolojinin birleşimidir:

    Makine kodu için yüksek performanslı derleyici

    Nesne yönelimli bileşen modeli

    Yazılım prototiplerinden görsel (ve dolayısıyla yüksek hızlı) bina uygulamaları

    · Veritabanları oluşturmak için ölçeklenebilir araçlar

    Delphi ortamında ekran yapısı.

    Delphi'yi Windows'ta aradıktan sonra birkaç pencere görünür (Şek. 1.):

    ana pencere,

    form penceresi,

    Nesne Denetçisi penceresi,

    Nesne ağacı penceresi,

    Program kodu penceresi.


    Şekil 1. Delphi ortamında ekran yapısı.

    Delphi sisteminin ekranın üst kısmında yer alan simgelerden oluşan grafik menüsünü ele alalım.Grafik menünün sol tarafında araç çubuğu yer alır. Araçlar, ana menünün bazı komutlarını yürütür - bu tür çoğaltma genellikle araç ortamlarında uygulanır.Bu panel, özellikle, bir projeyi diske kaydetmek için bir düğme, bir projeyi açmak için bir düğme, yürütme için bir programı başlatmak için bir düğme içerir.

    Grafik menünün bir sonraki kısmı, simgeler kümesi olarak düzenlenmiş bileşenlerin paletidir. Kümeler koleksiyonu, bir görsel bileşen kitaplığı (VCL) oluşturur. Her biri kendi sekmesiyle ilişkilendirilmiş birkaç bileşen kategorisi vardır. Bileşen paletinin yardımıyla formdaki bileşenleri (veya nesneleri) somutlaştıracağız.

    Forma bir nesne yerleştirmek için, ilgili palet düğmesine "tıklamanız" ve ardından form penceresinin içine tıklamanız gerekir: formda belirtilen yere bir nesne eklenir - seçilen bileşenin bir örneği tip.

    Object Inspector penceresi, bir formun veya forma yerleştirilmiş bir nesnenin özelliklerini görüntüleyen bir penceredir. Bizim durumumuzda, geçerli bileşen formdur, bu nedenle şekilde, özellikler penceresi formun özelliklerini gösterir.

    Özellikler penceresinde iki sekme vardır - Özellikler ve Olaylar, sırasıyla bileşenin özelliklerini (yani nesne veya form) ve çeşitli olaylara tepkisini ayarlamak için pencerede satırlar (alanlar) alabileceğiniz. Özellik, bir düğmenin boyutu veya bir etiketin yazı tipi gibi bileşenin bir özniteliğini tanımlar. Bir olay, örneğin, bir düğmeyi tıklamak veya bir pencereyi kapatmak gibi eylemler anlamına gelir.

    Nesne ağacı penceresi, sürüm 6'da ortaya çıktı ve etkin forma veya etkin veri modülüne yerleştirilen ayrı ayrı nesneler arasındaki ilişkileri görsel olarak görüntülemek için tasarlandı.

    Program kodu penceresi, program metni oluşturmak ve düzenlemek için tasarlanmıştır. Başlangıçta minimum düzeyde kaynak metin içerir.

    Delphi projeleri. Bir Delphi projesi formlardan, modüllerden, proje ayarlarından, kaynaklardan vb. oluşur.Tüm bu bilgiler dosyalarda saklanır. Bu dosyaların çoğu, uygulamanızı oluşturduğunuzda Delphi tarafından otomatik olarak oluşturulur. Bit eşlemler, simgeler vb. gibi kaynaklar, diğer kaynaklardan edindiğiniz veya kullanımınıza sunulan birçok araç ve kaynak düzenleyiciyle oluşturduğunuz dosyalarda bulunur. Ek olarak, derleyici ayrıca dosyalar oluşturur.

    Tasarım sürecinde oluşturulan dosyalar Tablo'da gösterilmiştir. 3.

    Uygulamanın ana kısmı, programın yürütülmesini başlatan ve diğer modüllerin başlatılmasını sağlayan Object Pascal kodunu içeren proje dosyasıdır (.dpr). Uygulama geliştirme sırasında Delphi tarafından otomatik olarak oluşturulur ve değiştirilir. Kaydetme işlemi sırasında proje dosyasına verilen ad, yürütülebilir dosyanın adı olur.

    Proje dosyası (.dpr) Bu metin dosyası, formlar ve modüller hakkında bilgi depolamak için kullanılır. Yürütme için programları başlatmak ve başlatmak için ifadeler içerir.
    Modül dosyası (.pas) Oluşturduğunuz her formun, kodu depolamak için kullanılan bir modül metin dosyası vardır. Formlarla ilgili olmayan modüller oluşturabilirsiniz. Delphi'nin birçok işlevi ve prosedürü modüllerde saklanır.
    Şekil dosyası (.dfm) Bu, form bilgilerini depolamak için Delphi tarafından oluşturulan bir ikili veya metin dosyasıdır. Her form dosyasının karşılık gelen bir modül dosyası (.pas) vardır
    Proje ayarları dosyası (.dfo) Bu dosya proje ayarlarını saklar.
    Kaynak dosyası(.res) Bu ikili, proje ve diğer kaynaklar tarafından kullanılan simgeyi içerir.
    Yedekleme dosyaları (.~dpr, .~dfm, .~pas) Bunlar sırasıyla proje, form ve modül dosyalarının yedek dosyalarıdır. Projede bir şey umutsuzca bozulursa, bu dosyaların uzantılarını buna göre değiştirebilir ve böylece önceki bozulmamış sürüme dönebilirsiniz.
    Windows yapılandırma dosyası (.dsk) Dosya, geliştirme ortamının tüm pencerelerinin yapılandırmasını saklar.
    Yürütülebilir dosya (.exe) Bu, uygulamanın çalıştırılabilir dosyasıdır. DLL'lerde, OCX'lerde vb. bulunan kitaplıkları kullanmadığınız sürece başka hiçbir şey gerektirmeyen bağımsız bir yürütülebilir dosyadır.
    Modül nesne dosyası (.dcu) Bu, son yürütülebilir dosyaya bağlanan derlenmiş modül dosyasıdır (.pas).

    Tablo 3. Tasarım sürecinde oluşturulan dosyalar.


    Şu anda, Delphi sisteminin 7. sürümü çoktan yayınlandı. Rekor sürede, dünyanın en popüler programlama sistemlerinden biri haline geldi. Dünyanın dört bir yanındaki birçok geliştirici, Delphi'yi yüksek verimli istemci-sunucu uygulamaları oluşturmak için bir araç olarak kullanmaya kararlıdır.

    Programlama evrim ağacı

    Şekil 1 Programlama evrim ağacı

    6. Kaynakça:

    1. BT Zaretskaya, B.G. Kolodyazhny, A.N. Gurzhiy, A.Yu. Sokolov. Bilişim 10-11 sınıfı. - K.: "Forum", 2001

    1. Delphi ortamında ekran yapısı (http://textbook.keldysh.ru/distant/delphi/del_2.htm)

    2. Patrikeev Yu.N. "Nesne yönelimli tasarım" (http://www.object.newmail.ru/oop1.html)

    3. S. Nemnyugin, L. Percolab "TurboPascal'ı Öğrenmek" - St. Petersburg: Peter, 2002.

    2. KhM Deitel. S. - M'de nasıl programlanır: "Binom", 2000

    3. İnternet sayfası: http://ru.wikipedia.org/wiki/LISP

    Bilgisayar programları oluşturma sürecinin temellerinde uzmanlaşmaya karar veren herhangi bir kişi, günümüzde en popüler programlama dillerinin hangileri olduğunu ve hangilerinin öğrenilmesi en iyi olduğunu merak eder. Ve ilk soruyu cevaplamak çok kolaysa, planlarına ve ihtiyaçlarına göre öğrencinin ikinci sorunun cevabını kendisi araması gerekecektir.

    En popüler programlama dillerine hızlıca bir göz atalım, böylece size hitap edeni seçip öğrenmeye başlayabilirsiniz.

    programlama?

    Ana programlama dillerini parçalara ayırmadan ve tanımlamadan önce, kavramın kendisini parçalara ayırmak gerekir.

    Bir programlama dili, bilgisayar programları yazmak için kullanılan resmi bir işaret sistemidir. Diğer herhangi bir dil gibi, kendi sözcüksel, anlamsal ve sözdizimsel kurallarına sahiptir.

    Düşük ve yüksek programlama seviyelerine sahip dilleri ayırın. Bugüne kadar, ikincisi esas olarak kullanılmaktadır.

    Yüksek ve düşük seviyeli programlama dilleri

    Düşük seviyeli bir programlama dili yapıya yakın bir yapıya sahiptir, bu durumda komutlar sıfırlar ve birlerle değil, anımsatıcı notasyon yardımıyla gösterilir. En iyi bilinen düşük programlama dili, montaj dilidir.

    Dillerden herhangi biriyle çalışmak yüksek nitelikler, anlayış gerektirir, ayrıca program yazmak çok zaman alır. Aynı zamanda düşük olanların yardımıyla küçük ama aynı zamanda etkili programlar oluşturabilirsiniz. Acemi programcılara onlarla tanışmaya başlamaları önerilmez.

    Üst düzey programlama dilleri, işlemleri açıklamak için anlamsal yapıların varlığıyla karakterize edilir. Çalışmaları çok zaman alır ve pratikte uygulanmaları, sözdizimi ve kelime dağarcığının temel yapılarına ve kurallarına dikkat ve anlayış gerektirir. Ancak aynı zamanda, üst düzey dil bilgisi, rekor sürede büyük, renkli, çok işlevli projeler oluşturmanıza olanak tanır.

    Yüksek seviye Pascal, Java, C, C++, C#, Delphi ve diğerlerini içerir. Yazılım ve uygulama programları yazmak için kullanılırlar.

    En popüler programlama dilleri

    Günümüzde en popüler programlama dilleri nelerdir?

    Son yıllarda programlama dillerinin başında gelen Java, C, C++, Python, C# en popüler ve rağbet gören dillerdir. Modern programların temelini oluştururlar ve herhangi bir büyük proje yazarken kullanılırlar. Programcıların %70'inden fazlası bu dillerle çalışıyor. Önümüzdeki 10 yılda da bugün olduğu gibi aynı talepte olacakları tahmin ediliyor.

    Ruby, PHP, JavaScript daha az popüler sayılmaz. Çoğu uzman onlara odaklanır.

    Genel olarak, popülerliğine bakılmaksızın, az ya da çok kendine saygı duyan herhangi bir uzman, farklı seviyelerde en az birkaç dil bilmelidir. Bunun nedeni, çoğu büyük projenin farklı dillerde geliştirilmesidir. Örneğin, bazı modüller C kullanılarak yazılır, diğerleri Java ile geliştirilir ve yine de diğerleri Delphi ile yazılır.

    C, C++ ve C#

    C ailesi ile başlayalım.

    C dili 70'lerde derlenmiş ve geliştirilmiştir. Temelinde, daha sonra C ++ ve C #, Java gibi diller oluşturuldu.

    C++, hem düşük seviye yardımcı programlar ve sürücüler hem de çok etkileyici uygulamalar ve yazılım paketleri oluşturmak için tasarlanmış güçlü bir dildir.

    C#, C ve C++ tabanlı modern bir nesne yönelimli dildir. Güvenli tip sistemine sahiptir. Ayırt edici özelliklerinden biri, başka bir popüler programlama dili olan Java'ya da çok benzemesidir.

    Dilin dezavantajlarından biri, yalnızca Windows işletim sistemi için uygulama oluşturmanıza izin vermesi ve ayrıca çok ağır olması, yani içinde yazılan programların çok yer kaplamasıdır.

    Birçok yönden C, C++ ve C#'ın yeni başlayanlar için programlama dilleri olduğu belirtilebilir. Onlara hakim olduktan sonra, yeni bir dil öğrenmenin minimum zaman alacağından emin olabilirsiniz.

    Onlarla tanışabilir ve ilk uygulamalarınızı özel bir ortam olan Borland veya Visual Studio'da yazabilirsiniz.

    JavaScript

    JavaScript, nesne yönelimli yeteneklere sahip bir dildir. 1996 yılında geliştirildi ve bugün en popülerlerinden biri. Dil, çoğunlukla web komut dizisinde kullanılır ve Internet Explorer, Firefox, Opera gibi büyük tarayıcılarda çalışır. HTML ve CSS ile de yakından ilişkilidir, bu yüzden öğrenmeye başlamadan önce bu dillerin temellerine hakim olmanız gerekir.

    İsim benzerliğine rağmen JavaScript ve Java'nın tamamen farklı iki dil olduğunu belirtmekte fayda var.

    Bu dil, tarayıcılar ve komut dosyaları, uygulamalar ve bunlara eklentiler oluşturmaya odaklananlar için uygundur. Kendi sitelerinizi oluşturmayı planlıyorsanız, onu daha iyi tanımanız da gerekir.

    java

    En popüler programlama dilleri göz önüne alındığında, Java'dan söz edilemez. 1995 yılından beri kullanılmakta olan nesne yönelimli bir programlama dilidir. Çok hafiftir ve herhangi bir mimarideki herhangi bir Java makinesinde çalışır. Android ve iOS için uygulama geliştirmek için kullanılır.

    Piton

    Ana görevi geliştiricinin üretkenliğini artırmak olan Python, kodu daha okunaklı hale getirir. Küçük bir sözdizimi yapıları listesine ve çok etkileyici bir standart işlev kitaplığına sahiptir. Dilin gelişimi 90'larda başladı ve bugüne kadar devam ediyor. Çeşitli projeler geliştirmek, uzantılar ve önceden geliştirilmiş uygulamaların entegrasyonu için kullanılır.

    Python dilinin temelleri hem programlamaya başlangıç ​​olarak hem de ikinci bir ek dil olarak öğrenilebilir.

    yakut

    Ruby, Perl, Smalltalk, Eiffel, Ada ve Lisp'in bölümlerini içeren üst düzey bir programlama dilidir. 1995'ten beri kullanılmaktadır. Dilin ana avantajları basitliği ve esnekliğidir. Hem küçük uygulamalar yazmak hem de ciddi programlar geliştirmek için uygundur.

    PHP dili

    PHP, web uygulamaları oluşturmak için tasarlanmış oldukça popüler bir betik dilidir. Oldukça sık, "Yeni Başlayanlar İçin Programlama Dilleri" listesine de dahil edilir ve çalışma için önerilir.

    Bununla birlikte, çok kısa sürede yüksek kaliteli web uygulamaları oluşturabilirsiniz. Basit ve anlaşılır bir yapıya sahip olan dil, onu birkaç gün içinde öğrenmenizi sağlar.

    Çözüm

    Çalışmaları gelecekte projelerinizi başarıyla oluşturmanıza ve bir programcı olarak para kazanmanıza yardımcı olacak en popüler programlama dillerini inceledik. Hangi dilin çalışılacağı konusunda bir fikir birliği yoktur, ancak aynı zamanda uzmanlar, faaliyet alanını daha da genişleteceği ve çeşitli ekip projeleri üzerinde çalışmayı kolaylaştıracağı için birkaç programlama dili bilmenin arzu edildiğini belirtmektedir.

    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ı add veya mov - peki ve ardından kayıtlar veya hafıza alanları listelendi, değişkenler bunlar işlemleri gerçekleştirmek. 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öze çarpı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 bizimle birlikte 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 her türlü tuhaflığı istedi. daha iyi yaşamak, daha da eğlenceli yaşamak için.

    80'lerden diller

    İlk tuhaflıklardan biri C++ diliydi. C dilinin çok sayıda eksikliği vardır (sadece çok büyük bir tane) - kendi ayağınıza vurmak, kurgu ile ayağınıza, diğer ayağınıza, bir ayağınızla ateş etmek dahil olmak üzere her şeyi yapabilirsiniz. diğer ayak, genel olarak - ne yapmak istersen. 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 örnek (kaynak) sıralama var , kopyalanıp yapıştırılabilir. 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 betik dilleri ​​bir dereceye kadar hala yaşıyorlar (hepsi 2000'den önce, hatta çok daha önce ortaya çıkmayı başardılar).

    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 eski C-ish yöntemleriyle kendinizi öldürmek zaten imkansızdı ve görünüşe göre orada onlardan daha azdı. 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 nasıl yazılacağını biliyorsanız - aslında, kitaplığın metnini programınıza eklemek olarak tasarlandı, sonuç olarak, bir sürü içerik yazdığınızda, her şeye sahip olursunuz - en başta olduğu gibi "ilkel" ise - her şey tek bir dosyaya eklenir ve ardından hepsini derlemek çok uzun zaman alır, çünkü birkaç kez gider ... Aynı Pascal, Virtovsky bu konuda çok daha düşünceliydi, sonraki sürümler daha da iyi.

    Genel olarak, C++'ın birçok eksikliği vardır. Bir programcının C ++ ile yazabilmesi için niteliklerinin yüksek olması gerekiyordu ve bu tür programcılar pahalıydı (hem eğitim hem de başka bir şey, yani piyasada programcı bulmak zor, çok para ö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ı [öğretim görevlisi Java'yı işaret ediyor], yani aralarında seçim yaparsanız ayrıntılarda farklılıklar var - nerede daha fazla para ödediğinizi 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 şeyleri başka bir şey yapın ve sizin için herhangi bir şey üzerinde ç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 çözüyorsanız (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, C en iyi seçimdir, ancak bunun için C++ kullanıldığını duydum (ancak 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 her türden cihaz artık ortaya çıkıyor (nesnelerin interneti gelmek üzere olduğunu vaat ediyor) (ve tabii ki milyonlarca olacak, her şey bu nesnelerin interneti ile asılacak) , ç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 da yazmanız gerekeceği anlamına geliyor C'de bir şey 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 bozacak kadar karıştıramazsınız, aksi takdirde insanlar gücenir - paraları gitti ve hiçbir yere ulaşmadı, çünkü siz varsınız. bir an dize 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, disklere erişimler (veritabanlarına bile değil, o kadar büyükler ki zaten orada yazılmış bir veritabanı bile çekemez) muhtemelen o zaman bazılarında yazılır. düşük seviyeli C, diske çılgınca hızlı yazmak ve tüm bunlar. 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 kez harcarsınız. daha fazla zaman 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 (Yığın Taşması'nda) ve son olarak, en önemlisi, büyük olmadığı sürece. kitaplık sayısı, dil çekmez. 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.

    Yazmak istiyorsanız, belki hayattaki en ilginç uygulamalar değil, ama onları tasarlamanız, hepsini düşünmeniz ve çoğu zaman oturup sıkılmak için çok para kazanmanız harika (bunun için ödeme yapmanız gerekiyor) iyiysen seni özledim), 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örmeyeceksiniz, ancak daha uzun süre dayanacaksınız.

    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ürlü istatistiksel ve diğer şeylerle 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 her şeyi daha erken satın almak için zamanları olacaktır. Algoritmaları daha kötü olsa bile siz sayılana kadar. 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 değerlendirme oluşturur. Birkaç şeyden oluşan böyle bir site: cümleleri alın, ayrıştırın, bir tür makine öğrenimi algoritması uygulayın (muhtemelen) basit ve içinde bir şey seçebileceğiniz, bir şeyler sürebileceğiniz, birkaç metre, birkaç oda, dairenizdeki sauna sayısı, jakuzi sayısı ve kabaca maliyet tahmini. 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, muhtemelen biliyorsunuzdur. Saf C'de, aşağı yukarı, bir analog yazın. rsync, tüm dosya erişimine sahip ağ eşitleme klasörlerine sahip olacaksınız vb.).

    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 dersten sonra, insanlar ilgilendikleri şeyi yapmak için dağılırlar, çünkü bu şey programlamanın bu tür temellerini oldukça geniş bir şekilde kapsar ve bu noktada insanlar zaten bilgisayar sistemleriyle hiçbir şekilde uğraşmak istemediklerini anlarlar (örneğin, onlar sistem programlamayı sevmediler), ancak bazı teorik algoritmalar, saymanın karmaşıklığı, bazı yeni şeyler icat etmek, dağıtmak 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 işaret eder) - 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 kapalı, sonra kaba bir şekilde kullanıcıya cevap verdiniz, başka bir şey daha var - bunu kabul etmiyorum. 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 gelip şöyle diyorsunuz: “Üniversiteden çocuklar 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 fark ettiğinizde ve eğlenmek için oturup yazmak, çünkü bundan hoşlanıyorsunuz - muhtemelen şu anda .