Neden bu kadar çok programlama dili var? Neden hala yeni diller oluşturuluyor? [kapalı]


51

Neden bu kadar çok programlama dili var?

Ve başka dillerin var olmasına rağmen birisini programlama dilleri oluşturmaya iten şey nedir?


Bu konuyla ilgili eğlenceli bir video Bob Martin Amca tarafından "Son programlama dili" dir ( skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera

Çünkü programcılar araçları sever.
haylem


2
Alakasız: xkcd.com/927
Monica

Bunu haklılaştırmak zor, her dilin bir hikayesi olduğunu tahmin ediyorum. Çoğu dil, yapıcıyı bildiğim kadarıyla yararlanmadı. Çoğu dil aynı kavramlar etrafında döner ve nadiren gerçek sorunları çözer veya iyi ortamlar sağlar. Bence onlar yarattıklarında, her şeyden bıktıklarını ve bıktıklarını hissediyorlar ve belki de hayatlarını nasıl boşa harcadıklarını görüyorlar ... ksh veya JavaScript'i düşünün ..... Sadece korkunç ve zararlı araçlar.
NoChance

Yanıtlar:


36

Programlama dilleri gelişir

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


10
Erlang'la ilgili ilginç olan şey, oyuncunun “temiz oda yeniden icat edilmesi” olması. Armstrong ve arkadaşları Erlang'ı geliştirdiğinde, Hewitt ve arkadaşlarının Aktör modelindeki çalışmaları hakkında bir şey bilmiyorlardı!
Frank Shearar

@ Frank: Bu ilginç. Bunu bilmiyordum, teşekkürler.
Jonas

2
Evrim için +1. Benzer bir soru "Neden bu kadar çok hayvan ve bitki türü var? Neden yeni olanlar hala ortaya çıkıyor?"
Gyan aka Gary Buyn,

1
@GaryBuyn bu bakış açısına abone olursanız, sadece "evrim için +1" olur. Birçokları için hayvan analojisi çok küçük bir parça.
Karanlık gece

@GaryBuyn, Uhm ... oldukça olarak var benzer "Hamster" etmektir "mezrasında" olarak.
Pacerier

22

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 .


2
Bu kesinlikle kütüphaneler, çerçeveler ve yazılımlar için geçerlidir, fakat şahsen bunun için geçerli bir dil bilmiyorum. Örnekler var mı
back2dos

16
Sanırım hem C # hem de Java, en azından kısmen C ++ ile olan karmaşıklıkları ele almak için tanıtıldı. Ve şimdi, eğer bu dillerin her ikisine de birkaç versiyondan sonra bakarsanız, sözdizimleri ve özellik kümeleri, insanların “tepenin üstünde” olduğu hakkında konuşmaya başladıkları zaman yeterince karmaşıklaşıyor. Hiçbir şey kanıtlayamasam da, benim üstümden. :-)
RationalGeek

2
İyi nokta, ama başka bir gerçeğin C # ile de oynadığını düşünüyorum - bu, hayır amaçlı nedenlerden dolayı mevcut olmayan ticari bir üründür ve pazarın kabul edilmesi / müşterilerinizin saklanması için ürünler yeni sürümlerde "iyileştirilmelidir"
gf

1
Bu doğru. Piyasadan daha fazla para alabilmek için yeni özellikler ekleme dürtüsü kesinlikle göz ardı edilemez. Ancak, iki ucu keskin bir kılıçtır. Bu nedenden dolayı ticari olarak desteklenen bir üründen yeni özellikler bekleyebilirsiniz. Ancak açık kaynak kodlu bir üründen, yalnızca gönüllü ordu ilgilenmeye devam ettiği sürece yeni özellikler elde edersiniz ve dümende kedileri sürüleme konusunda yetenekli biri vardır.
RationalGeek

C # birçok özelliğe sahiptir, ancak hala C ++ 'dan daha temiz bir dildir. LINQ gibi yeni eklemeler, C ++ ile kolayca yapamayacağınız şeyleri temiz bir şekilde yapmanıza izin verir. İki tür karmaşıklığın korunmasının daha muhtemel olduğunu düşünüyorum - biri problemin doğasında bir miktar karmaşıklığın olduğu, diğeri ise bir çeşit gereksiz karmaşıklığı programlarınızdan kaldırdığınızda, gereksinimlerin daha karmaşık hale geldiği - veriler gibi karmaşıklık - mevcut "boşluğu" doldurmak için genişler.
Steve314

11

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.


Sadece tüm bu inşaat araçları değil, aynı zamanda benzer görünen ancak farklı işler veya kullanıcılar için daha iyi hale getiren özel tasarım faktörlerine sahip birçok farklı çekiç ve çekiç türü bile var.
Barry Brown

+1 Sorunlu alanlara uygunluk için. Genel olarak takımları inceleyen akademisyenler, genel bir aracın belirli bir görev için belirli bir araçtan daha az güçlü olduğunu söylemektedir. Ayarlanabilen bir somun anahtarı ile sabit büyüklükte bir somun anahtarını düşünün
MarkJ

8

Çü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.


15
O zaman bile gelmeye devam edecekler. Sadece ölü diller taşla yazılır, pardon. Yaşayan dillerin sürekli değişmesinin bir nedeni var.
R. Martinho Fernandes

1
Bazıları sorunları ifade etmek için doğal dilin matematik olduğunu iddia eder. Bu, insanların neden saf lambda matematiği kullanmak yerine işlevsel dillere sözdizimsel şeker eklemeye devam ettikleri sorusunu gündeme getirmektedir. Bence sık sık rutin olarak çözmemiz gereken problemler İngilizce veya matematikte de kolayca ifade edilemiyor.
Steve314

5
Kabul. Saf matematik kullanarak "karnım acıktı" demek çok zor.
Aaron Digulla

1
@AaronDigulla: aç = toplam (göbek / yemek) kesinlikle :)
gbjbaanb

@AaronDigulla bu iyi bir örnek, genellikle hesaplama ifade etmek istiyorsunuz. Böylece şu gibi bir senaryoyu alırız: Acıktım, şimdi ye -> iyi, şimdi ye - - aç değil. Bağlamı müzakere etmek veya genişletmek için arı yetiştirme sistemleri kurmak için AI'nın hedefi olduğunu düşünüyorum. Normal programlama dilleri sadece insanların kendilerine ne yapmaları gerektiğini söylediklerini ifade eder ve bu genellikle genelden daha belirgindir. Ancak çoğu sorunun kendine özgü olması nedeniyle, sorunu burada görebilirsiniz.
AndreasScheinert

6

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.


6

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.


3
Eski kodlardan kaçınmak için tasarlanmış bir dilin belgelenmiş durumu var mı? Bu iddia pek olası görünmüyor. Yeni bir başlangıç ​​yapmak istediğiniz vakayı görebiliyorum (.net akla geliyor) ancak eski kodlardan kaçınmak değil, gelecek kodu daha iyi bir şekilde etkinleştirmek çok fazla bir şey değil.
Bryan Oakley,

Bunun doğru olduğuna inanmıyorum. Varolan bir dilin açık kaynak kodlu bir uygulamasını uygulamak (genellikle) mümkün.
alternatif

@BryanOakley - başlangıçta .NET VB6 ile geriye dönük uyumluluğu korumak için tasarlanmıştı, ancak çok zor bir sorun olduğuna karar verdiler. .NET hala dayandığı çok sayıda eski WRT Java / J ++ 'a sahipti. D'nin eski yasalara göre tasarlanmış bir dil örneği olduğunu düşünüyorum.
gbjbaanb 20:12

4

çü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.


1
Vikipedi makalesinde dipnotlara ulaşamayanlar için ezoterik diller wiki çok eğlenceli: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow

Bunun ne olduğunu ve neden soruyu yanıtlarken bunu neden tavsiye edersiniz? Yığın Borsası'nda "yalnızca bağlantı yanıtları" oldukça açık değildir
gnat

1
@gnat Dürüst bir şekilde orijinal metnin sadece bir link olmadığını düşünüyorum, link olmadan kısa ama mükemmel bir cevap olarak dururdu. Ancak bağlantının lezzet kattığı düşünülürse, ondan kısa bir alıntı ekledim.
jk.

3

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.


2

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.


Tekerleği yeniden canlandırmak için +1 işaretleyin. Genellikle pazarlama nedeniyle yapılır: yeterince büyük bir şirket veya kuruluş kendi programlama diline sahip olmalıdır.
Giorgio

1

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.


0

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.


NIH sendromu = genellikle BT endüstrisi için faydalı değildir.
gbjbaanb

0

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


python-history.blogspot.com/2009/01/… Python'un doğumunu detaylı olarak anlatıyor
Andy Dent

0

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.


-1

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.


-1

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!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.