• Programlama dillerinin listesi. Düşük ve yüksek seviyeli programlama dilleri

    Programcı William W. Vold anlatıyor

    Son altı aydır Pinecone adında bir programlama dili (PL) üzerinde çalışıyorum. Tamamlandı deme riskini almayacağım, ancak zaten kullanılabilir - bunun için değişkenler, işlevler ve kullanıcı tanımlı veri yapıları gibi yeterli öğe içerir. Okumadan önce bir göz atmak isterseniz GitHub'daki resmi sayfayı ve depoyu ziyaret etmenizi öneririm.

    giriiş

    Ben uzman değilim. Bu projeye başladığımda ne yaptığım hakkında hiçbir fikrim yoktu ve hala da yok. Bir dil yaratmanın ilkelerini asla kasıtlı olarak incelemedim - Web'deki bazı materyalleri okudum ve onlarda bile kendim için neredeyse yararlı hiçbir şey bulamadım.

    Ancak tamamen yeni bir dil yazdım. Ve çalışıyor. Doğru bir şey yapıyor olmalıyım.

    Bu makalede, Pinecone'nin (ve diğer programlama dillerinin) kaynak kodunu birçok kişinin sihir olarak gördüğü şeye nasıl dönüştürdüğünü göstermeye çalışacağım. Ayrıca uzlaşmak zorunda kaldığım durumlara da odaklanacağım ve aldığım kararları neden verdiğimi açıklayacağım.

    Metin, bir programlama dili oluşturmak için eksiksiz bir rehber olma iddiasında değil, ancak meraklılar için iyi bir başlangıç ​​noktası olacak.

    İlk adım

    "Nereden başlıyorsun?" diğer geliştiricilerin kendi dilimi yazdığımı öğrendiklerinde sıklıkla sordukları bir soru. Bu bölümde ayrıntılı olarak cevaplamaya çalışacağım.

    Derlenmiş mi yoksa yorumlanmış mı?

    Derleyici, programı bir bütün olarak ayrıştırır, makine koduna dönüştürür ve daha sonra yürütmek üzere saklar. Tercüman, programı gerçek zamanlı olarak satır satır ayrıştırır ve yürütür.

    Teknik olarak, herhangi bir dil hem derlenebilir hem de yorumlanabilir. Ancak her dil için yöntemlerden biri diğerinden daha uygundur ve erken bir aşamada bir paradigma seçimi sonraki tasarımı belirler. Genel anlamda yorumlama esnektir ve derleme yüksek performans sağlar, ancak bu çok karmaşık bir konunun sadece ipucudur.

    Nadir bulunan basit ama performanslı bir dil yaratmak istedim, bu yüzden en başından Pinecone'u derlenebilir yapmaya karar verdim. Bununla birlikte, Pinecone'nin de bir tercümanı var - ilk başta fırlatma ancak onun yardımıyla mümkün oldu, sonra nedenini açıklayacağım.

    Not. çeviri Bu arada, hızlı bir genel bakışımız var - bu, Python öğrenenler için harika bir alıştırma.

    Dil seçimi

    Bir tür meta-adım: programlama dilinin kendisi, bir dilde yazılması gereken bir programdır. C++'ı performansı, zengin özellik seti ve sadece hoşuma gittiği için seçtim.

    Ancak genel olarak tavsiyeler şu şekilde verilebilir:

    • yorumlanmış Kullanım Talimatı Şiddetle tavsiye ediliryazmak derlenmiş bir PL'de (C, C++, Swift). Aksi takdirde, meta tercüman tercümanınızı tercüme ettikçe performans cezası kartopu olacaktır;
    • derlenmiş Kullanım Talimatı Yazabilirsin yorumlanmış bir PL'de (Python, JS). Derleme süresi artacak, ancak program yürütme süresi artmayacaktır.

    mimari tasarım

    Bir programlama dilinin yapısı, kaynak koddan yürütülebilir dosyaya kadar, her biri verileri belirli bir şekilde biçimlendiren birkaç adımın yanı sıra bu adımlar arasında hareket etme işlevlerine sahiptir. Bunun hakkında daha ayrıntılı olarak konuşalım.

    Sözcüksel çözümleyici / sözlükçü

    Kaynak kod dizesi, sözlük oluşturucudan geçirilir ve bir belirteç listesine dönüştürülür.

    Çoğu PL'deki ilk adım sözcüksel analizdir. Basit bir ifadeyle, metnin belirteçlere, yani dil birimlerine bölünmesidir: değişkenler, işlev adları (tanımlayıcılar), operatörler, sayılar. Böylece, sözlük oluşturucuya kaynak kodu içeren bir dizi sağlayarak, çıktı olarak içerdiği tüm belirteçlerin bir listesini alacağız.

    Kaynak koduna yapılan atıflar artık sonraki aşamalarda gerçekleşmeyecek, bu nedenle sözlük oluşturucu onlar için gerekli tüm bilgileri sağlamalıdır.

    Esnek

    Bir dil yaratırken yaptığım ilk şey bir sözlük yazmak oldu. Daha sonra sözcüksel analizi kolaylaştırabilecek ve hata sayısını azaltabilecek araçlar üzerinde çalıştım.

    Bu tür ana araçlardan biri, sözcüksel bir analiz oluşturucu olan Flex'tir. Girdi olarak dilin dilbilgisinin açıklamasını içeren bir dosya alır ve ardından dizgiyi ayrıştıran ve istenen sonucu üreten bir C programı oluşturur.

    Benim kararım

    Yazdığım analizörü saklamaya karar verdim. Sonunda, Flex için herhangi bir özel avantaj görmedim ve onu kullanmak, yalnızca oluşturma sürecini karmaşıklaştıran ek bağımlılıklar yaratacaktı. Ek olarak, seçimim daha fazla esneklik sağlıyor - örneğin, birden fazla dosyayı düzenlemek zorunda kalmadan dile bir operatör ekleyebilirsiniz.

    Ayrıştırıcı / ayrıştırıcı

    Belirteç listesi ayrıştırıcıdan geçer ve bir ağaca dönüşür.

    Bir sonraki aşama ayrıştırıcıdır. Kaynak metni, yani belirteçler listesini (parantezler ve işlem sırasını dikkate alarak), oluşturulan dilin kurallarını yapısal olarak temsil etmenizi sağlayan soyut bir sözdizimi ağacına dönüştürür. Sürecin kendisi basit olarak adlandırılabilir, ancak dil yapılarının sayısındaki artışla çok daha karmaşık hale gelir.

    Bizon

    Bu adımda, ayrıştırıcıyı oluşturmak için Bison'u düşünerek üçüncü taraf bir kitaplık kullanmayı da düşünüyordum. Birçok yönden Flex'e benzer - sözdizimi kurallarına sahip kullanıcı dosyası bir C programı kullanılarak yapılandırılmıştır, ancak yine otomasyon araçlarını bıraktım.

    Özel programların avantajları

    Lexer ile kendi kodumu (yaklaşık 200 satır uzunluğunda) yazıp kullanma kararım oldukça açıktı: Bulmacaları seviyorum ve bu da nispeten önemsiz. Ayrıştırıcı farklı bir hikaye: şimdi bunun kodunun uzunluğu 750 satır ve bu üçüncü deneme (ilk ikisi çok kötüydü).

    Ancak ayrıştırıcıyı kendim yapmaya karar verdim. İşte ana nedenler:

    • içerik değiştirmeyi en aza indirme;
    • montajın basitleştirilmesi;
    • kendi başına bir şeyler yapma isteği.

    Walter Bright'ın (D dilinin yaratıcısı) bir makalesindeki ifadesinden çözümün uygunluğuna ikna oldum:

    Lexer ve ayrıştırıcı üreteçlerin yanı sıra diğer sözde "derleyici derleyicileri" kullanmanızı önermem. Bir sözcük oluşturucu ve ayrıştırıcı yazmak fazla zaman almaz ve bir oluşturucu kullanmak sizi gelecekteki çalışmalarda ona sıkı sıkıya bağlar (bu, bir derleyiciyi yeni bir platforma taşırken önemlidir). Ek olarak, jeneratörler alakasız hata mesajları vermekle dikkat çekiyor.

    Soyut anlamsal grafik

    Sözdizimi Ağacından Semantik Grafiğe Geçiş

    Bu bölümde, LLVM'deki "ara gösterime" (ara gösterim) esasen en yakın olan bir yapı uyguladım. Soyut Sözdizimi Ağacı (AST) ile Soyut Semantik Grafik (ASG) arasında küçük ama önemli bir fark vardır.

    ASG'ye karşı ASD

    Kabaca söylemek gerekirse, bir semantik grafik, bağlamı olan bir sözdizimi ağacıdır. Yani fonksiyonun ne tür döndürdüğü ya da aynı değişkenin nerede kullanıldığı gibi bilgileri içerir. Grafiğin tüm bu bağlamı tanıması ve hatırlaması gerektiğinden, onu oluşturan kodun birçok farklı açıklayıcı tablo şeklinde desteklenmesi gerekir.

    öğle yemeği

    Grafik yerine oturduğunda, programı çalıştırmak oldukça basit bir görev haline gelir. Her düğüm, bir miktar girdi alan, yapmak için programlandığı şeyi yapan (muhtemelen yardımcı işlevleri çağırmak dahil) ve bir sonuç döndüren bir işlevin uygulamasını içerir. Bu eylem halindeki tercümandır.

    Derleme seçenekleri

    Pinecone'u orijinal olarak derlenmiş bir dil olarak tanımladıysam, tercümanın nereden geldiğini soruyor olabilirsiniz. Mesele şu ki, derleme yorumlamadan çok daha karmaşıktır - daha önce bu adımda bazı sorunlarla karşılaştığımdan bahsetmiştim.

    Kendi derleyicinizi yazın

    İlk başta bu fikir hoşuma gitti - işleri kendim yapmayı seviyorum, ayrıca uzun zamandır montaj dilini öğrenmek istiyordum. Ancak sıfırdan platformlar arası bir derleyici oluşturmak, dilin her öğesi için makine kodu yazmaktan daha zordur. Bu fikrin kesinlikle pratik olmadığını ve harcanan kaynaklara değmediğini gördüm.

    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.

    Programlama dili

    Programlama dili- bilgisayar programlarını kaydetmek için tasarlanmış resmi bir işaret sistemi. Bir programlama dili, programın görünümünü ve uygulayıcının (bilgisayarın) kontrolü altında gerçekleştireceği eylemleri tanımlayan bir dizi sözcüksel, sözdizimsel ve anlamsal kural tanımlar.

    • İşlev: Bir programlama dili, belirli bir bilgi işlem sürecini gerçekleştirmek ve bireysel cihazların kontrolünü organize etmek için bir bilgisayara talimatlar iletmek için kullanılan bilgisayar programlarını yazmak için tasarlanmıştır.
    • Görev: Bir programlama dili, bir kişiden bir bilgisayara komut ve veri aktarmak için tasarlanırken, doğal diller insanlar arasında iletişim kurmak için kullanılmasıyla doğal dillerden farklıdır. "Programlama dilleri" tanımını genelleştirebilirsiniz - 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 dillerinin standardizasyonu

    Bir programlama dili, sözdizimini ve anlamını tanımlayan bir dizi belirtim olarak temsil edilebilir.

    Yaygın olarak kullanılan birçok programlama dili için uluslararası standartlar oluşturulmuştur. Özel kuruluşlar, ilgili dilin özelliklerini ve resmi tanımlarını düzenli olarak günceller ve yayınlar. Bu tür komiteler çerçevesinde, programlama dillerinin geliştirilmesi ve modernizasyonu devam etmekte ve mevcut ve yeni dil yapılarının genişletilmesi veya desteklenmesi konusundaki sorunlar çözülmektedir.

    Veri tipleri

    Modern dijital bilgisayarlar genellikle ikilidir ve veriler ikili (ikili) kodda depolanır (gerçi diğer sayı sistemlerindeki uygulamalar da mümkündür). Bu veriler tipik olarak üst düzey kavramları temsil eden gerçek dünya bilgilerini (adlar, banka hesapları, ölçüler vb.) yansıtır.

    Verilerin bir programda düzenlendiği özel bir sistem tip sistemi Programlama dili; tip sistemlerinin geliştirilmesi ve incelenmesi tip teorisi olarak bilinir. Diller sistemler olarak sınıflandırılabilir statik yazarak ve diller dinamik yazma.

    Statik tipli diller, aşağıdaki dillere daha da bölünebilir: zorunlu beyan her değişken ve işlev bildiriminin zorunlu bir tür bildirimi olduğu ve çıkarımsal türler. Bazen dinamik olarak yazılan diller denir son zamanlarda yazılmış.

    Veri Yapıları

    Üst düzey dillerdeki tip sistemleri, veri yapıları olarak adlandırılan karmaşık, bileşik tiplerin tanımlanmasına izin verir. Tipik olarak, yapısal veri türleri, temel (atomik) türlerin ve önceden tanımlanmış bileşik türlerin Kartezyen ürünü olarak oluşturulur.

    Temel veri yapıları (listeler, sıralar, hash tabloları, ikili ağaçlar ve çiftler) genellikle yüksek seviyeli dillerde özel sözdizimi yapılarıyla temsil edilir. Bu tür veriler otomatik olarak yapılandırılır.

    Programlama dillerinin anlambilimi

    Programlama dillerinin anlamını tanımlamaya yönelik birkaç yaklaşım vardır.

    Aşağıdaki üçünün en yaygın çeşitleri: operasyonel, türevsel (aksiyomatik) ve düz anlamsal (matematiksel).

    • Çerçeve içindeki anlambilimi açıklarken operasyonel yaklaşımında, programlama dili yapılarının yürütülmesi genellikle bazı hayali (soyut) bilgisayarların yardımıyla yorumlanır.
    • Türev semantik, mantık dilini kullanarak dil yapılarını yürütmenin ve ön ve son koşulları belirlemenin sonuçlarını açıklar.
    • simgesel semantik, matematiğe özgü kavramlarla çalışır - kümeler, yazışmalar ve ayrıca yargılar, ifadeler vb.

    Programlama paradigması

    Bir programlama dili, belirli bir temel bilgi işlem modeline ve programlama paradigmasına göre oluşturulur.

    Çoğu dilin, von Neumann bilgisayar mimarisi tarafından verilen zorunlu bilgi işlem modeline odaklanmış olmasına rağmen, başka yaklaşımlar da var. Yığın hesaplama modeli (Forth, Factor, PostScript vb.) ile fonksiyonel (Lisp, Haskell vb.) ve mantıksal programlama (Prolog) ve hesaplama modeline dayalı olarak REFAL dili olan dillerden bahsedebiliriz. Sovyet matematikçi A A. Markov Jr. tarafından tanıtıldı.

    Şu anda, alana özgü, bildirimsel ve görsel programlama dilleri de aktif olarak gelişmektedir.

    Dilleri Uygulama Yolları

    Programlama dilleri derlenmiş ve yorumlanmış olarak uygulanabilir.

    Bir derleyicinin (özel bir program) yardımıyla derlenmiş bir dilde bir program, belirli bir işlemci türü için makine koduna (bir dizi talimat) dönüştürülür (derlenir) ve daha sonra yürütme için başlatılabilen yürütülebilir bir modülde birleştirilir. ayrı bir program olarak Başka bir deyişle, derleyici, programın kaynak kodunu üst düzey bir programlama dilinden işlemci talimatlarının ikili kodlarına çevirir.

    Program yorumlanan bir dilde yazılmışsa, yorumlayıcı kaynak metni önceden çeviri yapmadan doğrudan yürütür (yorumlar). Program orijinal dilinde kalır ve tercüman olmadan çalıştırılamaz. Bir bilgisayarın işlemcisi, bu bağlamda, makine kodunun yorumlayıcısı olarak adlandırılabilir.

    Derlenmiş ve yorumlanmış dillere bölünme şarta bağlıdır. Dolayısıyla, Pascal gibi geleneksel olarak derlenmiş herhangi bir dil için bir tercüman yazabilirsiniz. Ek olarak, çoğu modern "saf" yorumlayıcı, dil yapılarını doğrudan yürütmez, ancak bunları bazı üst düzey ara temsillerde derler (örneğin, değişken ayırma ve makro genişletme ile).

    Herhangi bir yorumlanmış dil için bir derleyici oluşturabilirsiniz - örneğin, orijinal olarak yorumlanan Lisp dili herhangi bir kısıtlama olmaksızın derlenebilir. Çalışma zamanında oluşturulan kod, çalışma zamanında dinamik olarak da derlenebilir.

    Kural olarak, derlenmiş programlar daha hızlı çalışır ve zaten makine diline çevrilmiş oldukları için ek programların yürütülmesini gerektirmez. Aynı zamanda, program metni her değiştirildiğinde yeniden derlenmesi gerekir, bu da geliştirme sürecini yavaşlatır. Ek olarak, derlenmiş bir program yalnızca aynı tür bilgisayarda ve genellikle derleyicinin tasarlandığı aynı işletim sistemi altında çalışabilir. Farklı türde bir makine için çalıştırılabilir bir dosya oluşturmak için yeni bir derleme gereklidir.

    Yorumlanan dillerin bazı özel ek özellikleri vardır (yukarıya bakın), ayrıca bunlardaki programlar değişiklikten hemen sonra çalıştırılabilir, bu da geliştirmeyi kolaylaştırır. Yorumlanan bir dil programı, çoğu zaman birçok farklı türde makinede ve işletim sisteminde ek bir çaba sarf edilmeden çalıştırılabilir.

    Ancak, yorumlanan programlar, derlenmiş programlardan belirgin şekilde daha yavaş çalışır ve bir yorumlayıcı program olmadan çalışamazlar.

    Bu yaklaşım bir anlamda hem yorumlayıcıların hem de derleyicilerin avantajlarını kullanmanızı sağlar. Hem tercümana hem de derleyiciye (Forth) sahip dillerin olduğunu belirtmek gerekir.

    Kullanılan semboller

    Modern programlama dilleri ASCII'yi kullanmak için tasarlanmıştır, yani tümünün kullanılabilirliği grafik ASCII karakterleri, herhangi bir dil yapısı yazmak için gerekli ve yeterli bir koşuldur. Yöneticiler ASCII karakterleri sınırlı ölçüde kullanılır: yalnızca satır başı CR, satır besleme LF ve yatay sekme HT'ye (bazen dikey sekme VT ve sonraki sayfa FF) izin verilir.

    6 bitlik karakter çağında ortaya çıkan ilk diller, daha sınırlı bir set kullanıyordu. Örneğin, Fortran alfabesinde 49 karakter vardır (boşluk dahil): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $" :

    Dikkate değer bir istisna, çok sayıda özel karakter kullanan APL dilidir.

    ASCII olmayan karakterlerin (KOI8-R karakterleri veya Unicode karakterleri gibi) kullanımı uygulamaya bağlıdır: bazen bunlara yalnızca yorumlarda ve karakter/dize sabitlerinde izin verilir ve bazen tanımlayıcılarda da izin verilir. SSCB'de, tüm anahtar kelimelerin Rusça harflerle yazıldığı diller vardı, ancak bu tür diller fazla popülerlik kazanmadı (istisna, Yerleşik programlama dili 1C: Enterprise'dır).

    Kullanılan karakter setinin genişletilmesi, birçok yazılım geliştirme projesinin uluslararası olması gerçeğiyle sınırlıdır. Bazı değişkenlerin adlarının Rusça, bazılarının Arapça ve yine bazılarının da Çince karakterlerle yazıldığı bir kodla çalışmak çok zor olacaktır. Aynı zamanda yeni nesil programlama dilleri (Delphi 2006, Java) Unicode'u metin verileriyle çalışmak için destekler.

    Programlama dili dersleri

    Ayrıca bakınız

    notlar

    Edebiyat

    • Hal Abelson, Gerald Jay Sussman. Bilgisayar Programlarının Yapısı ve Yorumlanması
    • Robert W. Sebesta. Programlama dillerinin temel kavramları \u003d Programlama Dilleri Kavramları / Per. İngilizceden. - 5. baskı - M .: Williams, 2001. - 672 s. - 5000 kopya. - ISBN 5-8459-0192-8 (Rusça), ISBN 0-201-75295-6 (İngilizce)
    • Wolfenhagen V. E. Programlama dillerinin tasarımları. Açıklama yöntemleri. - M .: Merkez YurInfoR, 2001. - 276 s. - ISBN 5-89158-079-9
    • Paronjanov V.D. Zihnin çalışması nasıl geliştirilir. Programcısız algoritmalar - çok basit! - M .: Delo, 2001. - 360 s. - ISBN 5-7749-0211-0
    • F. Biancuzzi, S. Worden. Programlama Öncüleri. En popüler programlama dillerinin yaratıcılarıyla diyaloglar. Petersburg. : Symbol-Plus, 2010. - 608 s. - ISBN 978-5-93286-170-7

    Bağlantılar

    • Dil Listesi (İngilizce) - kısa bir açıklama ile 2500'den fazla dil
    • Bilgisayar Dilleri Tarihi (İngilizce) - programlama dillerinin tarihi (1954'ten Mayıs 2004'e kadar) (düzenli olarak güncellenen bir tablo içerir)
    • Örnekler (İngilizce) - 162 dilde programlama örnekleri
    • Programlama Dili Popülerliği (eng.) - 2004 Programlama Dili Popülerliği Araştırması
    • Öğrenilecek 10 Programlama Dili (2006)
    • Programlama Topluluğu Endeksi (eng.) - programlama dillerinin popülaritesinin düzenli olarak güncellenen bir sıralaması
    • Computer Language Shootout Benchmarks (İngilizce) - programlama dillerinin verimlilik açısından karşılaştırılması
    • Sevilen Programlama Dilleri (İngilizce) - programlama dillerinin onlara "sevgi" ve "nefret" ile karşılaştırılması

    Wikimedia Vakfı. 2010

    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ö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 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 olarak aynı zamanlarda gideceğiz, ancak 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" olduğu ortaya çıkmaz, başka sorunlar ortaya çıkar, bir şeyin miras kaldığı, orada miras kaldığı - genel olarak, çok anlamlı olmayan on tanesinin tek bir anlamlı satır olduğu ortaya çıkar. 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, 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 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'ta 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ö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 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 "Oh, 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 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 fark ettiğinizde ve eğlenmek için oturup yazmak, çünkü bundan hoşlanıyorsunuz - muhtemelen şu anda .

    Makine insan dilini anlamıyor. Elbette Siri ve diğer ses tanıyıcılardan bahsetmiyoruz - yeni yazılım oluşturmaktan bahsediyoruz. Bir ustabaşının işçilere nasıl tuğla döşeneceğini açıklaması gibi, bir hesap makinesi yapmak için makineye bir görev verilmesi gerekir. Ama "Vasya, evet, daha düzgün olmalısın!" bir programlama dilinde tanımlanmalıdır. Bu diller nereden geldi?

    Modern bilgisayarın başlangıç ​​noktası Babbage'nin Analitik Motorudur, ancak diller daha önce icat edildi: 19. yüzyılda, mühendislerin çalışma mantığını tanımladığı mekanik bir piyano ve dokuma tezgahı icat edildi. Bu talimat dizisi, programcıların bugün yazdıklarının prototipidir.

    20. yüzyılın ortalarında Turing makinesi ortaya çıkıyor, ardından ilk bilgisayarlar ve ilk modern programlama dili Plankalkül ortaya çıkıyor. Geliştirmedeki ilk sıçrama, ordu bilgisayarlara ilgi gösterdiğinde gerçekleşti - DARPA ve onlar gibi diğerleri, genç bir sektöre aktif olarak yatırım yapmaya başladı. İkincisi, internetin yayılmasıyla geldi - insanlar dijital çağa ne kadar derinden dalarsa, bu dönemin ortamının ana yaratıcıları olan programcılara o kadar çok talep var. Ve giderek daha fazla insan onlara katılmak istiyor.

    Arzu makul ve anlaşılır, ancak kafadaki ilk soru genellikle aşılmaz bir engel haline geliyor - programlama öğrenmeye hangi dilden başlamalı? Yanlış seçim yapma korkusu, zaman kaybetme korkusuna dayanır. Sonuç olarak, acemi bir programcı, aziz hedefine doğru ilerlemeden birkaç yıldır "kendi" dilini arıyor. Öyleyse kahretsin, hangi dili seçmeliyim?

    İlk programlama dilini seçme kriterleri

    Dil seçimi, programcının çözmek istediği görevlere bağlıdır. İnternet projeleri için Google ve Facebook'un projelerinde Android için mobil uygulamalar için kullandığı Python, en iyi arkadaş Java ve iOS için Swift popülerdir.

    Gerçek seçim sorunu, belirli bir görevin olmamasıdır. Bu normaldir çünkü tam olarak ne yapmak istediğinizi ancak ortamın içindeyken anlayabilirsiniz. Bu nedenle uzmanlar, en geniş sorun yelpazesini çözebileceğiniz dili ilk dil olarak almanızı önerir.

    Tabii ki, son derece uzmanlaşmış diller, keskinleştirildikleri görevleri çözmede daha iyidir, ancak bu bir sonraki adımdır. Bir aceminin hala seçim özgürlüğüne ihtiyacı var.

    Dışında evrensellik, başka kriterler var:

    • Basitlik- karmaşık sözdizimi üzerinde tökezlemek ve okunamayan kodun vahşi doğasında sıkışıp kalmak, öğrenmeye en hoş başlangıç ​​değildir.
    • Popülerlik- dil sık sık güncellenmeli, geniş bir geliştirici topluluğuna sahip olmalı, büyük şirketlerde rağbet görmelidir. Diğer bir artı, dil ne kadar popüler olursa, ortaya çıkan işe yarayan bir sorunun cevabını bulmanın o kadar kolay olmasıdır.

    Bu üç açıklama Python, C#, Java ve Ruby'ye en uygun olanıdır.

    80'lerde Hollandalı programcı Guido van Rossum tarafından geliştirildi. Büyük teknoloji şirketleri Python ile çalışıyor: Yandex, Google, Facebook ve YouTube. Bu, sözde betik dilidir - programın başlığının altında ne olduğunu yazarlar. Web uygulamaları, oyun geliştirme, sunucu yazılımı...

    Basitlik Popülerlik çok yönlülük

    Kodun okunması kolaydır ve net bir yapıya sahiptir. Öğrenmeye başlamak için standart araçlar yeterlidir.

    ABD Üniversitelerinde Temel Programlama Programlarında 1. Sırada.

    Düzenli olarak güncellenir - her 2,5 yılda bir. Analitik şirketi TIOBE Software'e göre Ocak 2016 itibarıyla en popüler beş dil arasında yer almaktadır.

    Neredeyse her şey Python'da yazılmıştır: sistem yönetimi betikleri, web siteleri, makine öğrenimi sistemleri, oyunlar.

    Dil, 90'ların sonlarında C++ ve Java temel alınarak geliştirilmiştir. Esas olarak büyük kurumsal projeler için kullanılır, ancak bunlarla sınırlı değildir. Örneğin, Unity oyun motorundaki betikler C# ile yazılır.

    Basitlik Popülerlik çok yönlülük

    Yapısal olarak C ++ ve Java'ya yakın - sözdizimi (kod yapısı) Python ve Ruby'den daha karmaşıktır, ancak ilgili dilleri öğrenmek daha az zaman alacaktır. Kitaplık arayüzleri, öğrenmeyi kolaylaştıran tasarım modellerine iyi uyum sağlar.

    Son güncelleme 2015'te yapıldı.

    C#, Windows Phone, iOS ve Android için yazılmıştır. Çok miktarda belge var, ancak ücretsiz lisansa sahip çok sayıda kitaplık yok - bu, bir programcının eğitim için başka birinin kodunu kullanabileceği, ancak ticari bir üründe kullanmak için ödeme yapmanız gerektiği anlamına gelir.

    Dil, Microsoft'tan programcılar tarafından Windows uygulamaları geliştirmek için icat edildi. Buna rağmen başka sistemlerde de kullanılmaktadır. Ayrıca gömülü, masaüstü ve sunucu platformlarında çalışır.


    yakut

    Perl dilinden etkilenen bir Japon geliştirici tarafından oluşturuldu. 1995 yılında başlatıldı. Ruby'de yazılmıştır: Shopify, Github, Groupon, Yellow Pages, Twitter ve Slideshare. Popülerlik kazanıyor, ancak yeni başlayan şirketlerde büyük şirketlerden daha yaygın. Basit bir internet projesi oluşturmak için iyi.

    Basitlik Popülerlik çok yönlülük

    Python gibi, kodun okunması kolaydır. Yapısı da Python ile aynıdır. Diğer dillerle karşılaştırıldığında, standart kitaplıkların seçimi daha zayıftır - aramak için zaman harcamanız gerekir.

    Büyük ve sadık bir geliştirici topluluğu — TIOBE Software'e göre en popüler on dili kapatır. Birçok kütüphane ücretsiz olarak kullanılabilir.

    Dördü arasında en az çok yönlü olanı - özellikle web geliştirme için uygundur. Öte yandan, İnternet projelerinde onunla çok farklı ve çok güzel şeyler yapabilirsiniz.


    java

    Dilin ilk versiyonu Mayıs 1995'te yayınlandı. Java, Amazon, eBay, LinkedIn ve Yahoo!

    Basitlik Popülerlik çok yönlülük

    Daha önce bahsedildiği gibi, Java ve C# çok benzer sözdizimine sahiptir - birini öğrenmiş, neredeyse diğerini bilmektedir. Ancak ilk durumda olduğu gibi, sözdizimi Ruby ve Python'dan daha karmaşıktır.

    Dünyada 3 milyar Android akıllı telefon var, bu da Java'nın uzun süre talep göreceği anlamına geliyor. TIOBE Software'e göre popülerlikte ilk.

    Çoğu zaman kurumsal geliştirme ve Android uygulamaları için kullanılır.


    Hazırlığın sonucu

    Bir sonuç çıkarmak zor. Bir yandan, bir taşla iki kuşu öldürme ve Java veya C # alma yeteneği çağırıyor, ancak Python çok yönlülüğü ve Ruby sadeliği ile çağırıyor.

    Şüphelerimiz vardı ve deneyimli geliştiricilerle konuşmaya gittik - hala Python'da durmayı tavsiye ediyorlar. Profesyonel geliştirici, VoxImplant müjdecisi Grigory Petrov şöyle diyor:

    Python programlama diline genellikle "yürütülebilir sözde kod" denir çünkü dilin sözdizimi ve standart kitaplıkları okunabilirliği ve anlaşılırlığı vurgular. Buna en geniş geliştirme araçları, kitaplıklar, eğitim materyalleri yelpazesini ekleyin - ve yeni başlayanlar için en iyi programlama dillerinden birine sahibiz.

    Çözüm: net görevler ve net hedefler olmasa da, yalnızca kodlama arzusu varken, Python'da durmaya değer - basit, popüler ve evrenseldir. #tceh'de yeni başlayanlar için bir programlama öğretmeni olan Nikita Sobolev de bu dil seçiminin yeni başlayanlar için en uygun olduğunu düşünüyor - eğitim programı bir Ruby kursundan daha karmaşık ve daha uzun çıktı, ancak yön seçme özgürlüğü buna değer.