Neden bu kadar çok programlama dili var?
Ve başka dillerin var olmasına rağmen birisini programlama dilleri oluşturmaya iten şey nedir?
Neden bu kadar çok programlama dili var?
Ve başka dillerin var olmasına rağmen birisini programlama dilleri oluşturmaya iten şey nedir?
Yanıtlar:
Yeni programlama dilleri genellikle mevcut dillerden öğrenir ve özellikleri yeni bir şekilde ekler, kaldırır ve birleştirir. Nesne yönelimli ve işlevsel gibi birkaç farklı paradigma vardır ve birçok modern dil her ikisinden de özellikleri karıştırmaya çalışır.
Ayrıca, çok çekirdekli işlemcilerin artışı gibi çözülmesi gereken yeni problemler de var. Bunun için en yaygın çözüm konu başlıklarıydı, ancak bazı programlama dilleri eşzamanlılık sorununu farklı bir yoldan çözmeye çalışıyorlar, örneğin Aktör Modeli. Erlang'a bakınız - Eşzamanlı Bir Dünya İçin Yazılım
Bu bir döngüdür. Yeni bir dil başlatıyorsunuz ve selefinizin tüm kötü sözdizimlerinden ve kötü seçimlerinden kurtulmakta özgürsünüz. Versiyon 1'de, dil harika görünüyor çünkü bu valizden hiçbirine sahip değil ve işi yapıyor. Daha sonra, daha yeni sürümlerde, çalışmayan özellikleri denemeye başlarsınız veya sözdiziminizin biraz kabalaşmasına neden olan diğer daha yeni dillerden özellikler getirirsiniz. Bakın ve birkaç versiyonun ardından, dilinizin şimdi değiştirdiğiniz dil gibi karmaşık olduğunu fark edin, saçma sözdizimi sorunları ve eski bagaj. Birdenbire, yeni bir dil yarattıysanız , tüm bunları düzeltebileceğinizin farkına varırsınız .
Aynı sebepten dolayı çekiçler, tornavidalar, el testereleri, şerit testereler, kırıcılar, kazıcılar ve diğer birçok araç vardır: her dil her iş için mükemmel değildir. Bazı diller belirli problem alanlarında hedeflenmiştir: R özellikle istatistiksel analiz için iyidir, C özellikle işletim sistemi çekirdeği yazmak için iyidir, Haskell özellikle matematik ağırlıklı veya finansal hesaplamalar için iyidir, Erlang özellikle eşzamanlı programlamada iyidir.
Ayrıca, aynı sebepten dolayı gömlekler farklı renklerde gelir: bazı insanlar tıpkı bir dilin "tarzı" ndan hoşlanır.
Ve elbette, birçok programcı yeni bir dil icat etmeyi, sadece ne olduğunu görmek için veya belki de diller hakkında biraz bilgisi olan ve kaşıntı kaşımak veya bazı fikirler denemek istedikleri için eğlenceli buluyorlar.
Çünkü hepsi berbat (biri ya da diğeri).
Şu anda, doğal sorunları tanımlamak için yaklaşık 5000 dil oluşturduk ve bunların hiçbiri program yazmak için uygun değil (bir örnek "İngilizce" olur).
Birisi bir cümle ile ifade edebileceğiniz şeyi doğal bir dilde ifade edebilecek bir programlama dili yaratmanın bir yolunu bulmazsa, gelmeye devam edecektir.
Açıkçası, yeni bir dil oluşturmak için önemli bir motivasyon, mevcut dillerden daha iyi bir şey elde etmektir. Ve her zaman iyileştirmeye yer olduğu için, her zaman yeni diller olacaktır.
Ticari çıkarlar bir başka büyük neden. Örneğin Microsoft'un her ihtiyaç için bir dil sunabilmelerinin önemli olduğunu düşünüyorum, böylece şirketler ve geliştiriciler platformlarını tercih eder.
Eski Kod Yeni bir dil başlatırsanız, eski bir dili değiştirdiğinizde tüm şikayetleri dinlemek / dikkate almak zorunda değilsiniz. Herkes yeni uygulamanın daha iyi olduğunu kabul etse bile, eski kodu kıramaz. Ve orada birçok eski kod var.
çünkü gerçek dilleri kullanmasalar bile yeni diller oluşturmak eğlencelidir
Ezoterik bir programlama dili (bazen esolang'a kısaltılır), bilgisayar programlama dili tasarımının sınırlarını, bir kavram kanıtı veya şaka olarak test etmek için tasarlanmış bir programlama dilidir.
Bir programlama dili oluşturmak oldukça eğlenceli. Daha önceki gereksinimlerle sınırlı olmadığından tamamen yaratıcı çalışmalara yakın. Artık uygulamak zor değil, çünkü her zaman C'yi derleyebilir ve ilk olarak bir derleyici yazıyorsanız, C kodunu yeterli performans için derleyebilirsiniz.
Elbette, çoğumuz düşündüğümüzden daha az iyi fikirlere sahibiz, bu yüzden genellikle hayal kırıklığı yaratıyor ya da orijinal tasarımcıdan başka biri tarafından sevilmiyor.
Bildiğiniz herhangi bir programlama dilini düşünün. Sevmediğin birkaç şeyi kolayca bulabilirsin, değil mi? Muhtemelen bunların nasıl düzeltileceğine dair fikirlerin var. Derleyici inşası hakkında pek çok şey bildiğinizi varsayarak (ve birçok insanın yaptığı), sadece biraz daha fazla ivme ile, kendi tasarımınızı ve hatta uygulamaya başlayabilirsiniz.
Hızlı Kısa Cevap
Tekerleği Yeniden Keşfetmek ... Güncel Trend Nedir?
Uzun Cevap Sıkıcı
Pek çok insan "eski programcılar için benzer bir yeni dil" in "yeni programcılar için sade bir yeni dil" olduğunu unutuyor.
Bunun için ne demek istiyorum?
Eh, "birkaç yıl" programcılar için Java veya C #, mevcut "Cobol" için ek bir programlama dili olabilir, (OO / Usul) Temel, C / C ++, "yeni" programcılar için, Java veya C # ise yeni dillerdir; (OO / Prosedür) Temel, C / C ++ onlar için mevcut değil, bu yüzden tekerleği yeniden icat etmek ortak bir şey oluyor ...
Ve eğer teknolojide yeni bir trend varsa, insanlar web için ecmascript / javascript ve işlevsel programlama gibi bu trende dayalı yeni bir programlama dili yapabilir ...
Şerefe.
yeni programlama dilleri birçok farklı nedenden dolayı oluşturulur, çoğunlukla yeni programlama paradigması olduğu için veya donanımdaki gelişmeler nedeniyle, çoklu görev, vb. gibi yeni donanım özelliklerinden yararlanmak için yeni dil yaratır.
Benim durumumda, özel sebeplerden dolayı genellikle küçük derleyiciler (yeni bir programlama dili ile) yapıyorum. Oyunların bir bölümünü yaparsam ve oyun gelişimi için özel olarak hazırlanan bir programlama dilinin daha küçük kodlara ve daha hızlı bir gelişmeye neden olacağına inanıyorum, o zaman onu yapıyorum. ve sonunda, diğer genel amaçlı programlama için de kullanılabileceği ortaya çıkıyor.
Programlama dilleri yaratan insanların çoğunun belirli bir amacı olduğunu düşünüyorum; başından beri onları genel amaç için yaratanlar var. ama çoğu değil.
Bu arada, çok fazla programlama dili olduğunu düşünüyorum, ancak yüzlerce yenisi daima ortaya çıkacak. bazıları eğlencesiz, bazıları niş amaçlı, bir okul projesi olarak veya yüzlerce başka sebepten dolayı. ve er ya da geç yeni biri popüler olacak. Asla bitmeyecek.
Aynı sebepten ötürü çok <weverever> var ve yeni <whatever> yaratmaya devam ediyoruz
Örneğin, bir düzine PHP MVC çerçevesi vardır, ancak insanlar her zaman belirli ihtiyaçları karşılamak, başka bir ekibe bağımlı olmaktan kaçınmak veya sadece daha iyi bir şeyler denemek ve yaratmak için her zaman yeni gereksinimler yaratacaktır. Aynısı temel olarak her çeşit araç veya uygulama için de geçerlidir.
Bu çok iyi bir şey, bence herkes için bir kazan-kazan.
Üniversiteler birçok programlama diline katkıda bulunur ve Ericsson (Erlang = Ericsson dili), Bell Laboratuarları (B ve C dilleri), Google (önceki birkaç aydan beri Go dili) gibi çok büyük şirketler de vardır. Üniversite araştırmasının bir parçası olarak yazılanların çoğu kullanılmıyor. Yine de birkaç önemli istisna var. Sanırım kendi dilinizi / derleyicinizi yazmanız, CS Teorisi veya ilgili disiplinleri okuyan kişilerin doktora tezleri için iyi bir başlık yapar. Python'un, çeşitli programcıların tek bir fikrin etrafında işbirlikçi çevrimiçi çabalarından doğan ilk dillerden biri olduğunu söylüyor.
Bunun birkaç nedeni var, çünkü çoğu insan var olanın bazı problemleri çözmeyi kolaylaştırmadığını düşünüyor. Bazıları sadece eğlence veya akademik ilgi için.
Bence, mükemmel dili nasıl tasarladığınızla ilgili sorunun henüz çözülmediğine (ve asla olmayacağına) dair sağlam bir argüman olduğunu düşünüyorum. İnsanların harika bir dili neyin yapacağı konusunda yeni fikirleri olduğu sürece, denemeye devam edecekler. Bu denemelerden bazıları Erlang gibi harika yeni bir alanın haritasını çıkaracak ve bazıları flop yapacak, ancak floptan bir şey öğrenildiği sürece tamam.
Daha önce de belirtildiği gibi, diller belirli belirli görevleri hedeflemeye çalışır ve yeni diller yeni bir alanı hedefleyebilir. Bu diller şu anda dışında olan diğer dillerden özellikler alabilir.
Yeni dillerin başka bir nedeni, birçok farklı görevi birleştirmeye çalışmak ve birçok farklı ihtiyaç için tercih edilen dil olmaktır. Bu dillerden bazıları, ihtiyacınız ne olursa olsun, her zaman kullanacağınız dilleri kapsayan olmaya çalışıyor.
Programlama dilleri sınıfımda çoğu dilin kaşıntı çizmeye icat edildiğini öğrendim. Çoğu dil, bazı algoritmaları daha iyi ifade edebilmek için icat edildi. Örneğin, fonksiyonel diller özyinelemeli algoritmalar çok daha etkileyici bir alan vermek için icat edildi.
Neden bu kadar çok dil olduğunu sormak neden C ++ 0x sorguluyor? :)
Ayrıca, ne kadar çok dil biliyorsanız o kadar anlamlı olursunuz - bu hem programlama hem de doğal dillerde geçerlidir!