Herhangi bir dil amaçlananından başka bir şey için çok popüler oldu mu?


70

Bu senaryoyu alın:

  • Bir programcı bazı problemleri çözmek için bir dil oluşturur.

  • Daha sonra başkalarının bu gibi problemleri çözmesine yardımcı olmak için bu dili serbest bırakır.

  • Başka bir programcı, farklı problem kategorileri için daha iyi olduğunu keşfeder.

  • Bu yeni uygulama sayesinde, dil öncelikle o uygulama için popüler hale gelir.

Bunun gerçekleştiği durumlar var mı?

Başka bir deyişle, bir dilin amaçlanan amacı gerçekte nasıl kullanıldığına ya da popüler olup olmadığına herhangi bir etkisi var mı? Bir dil bile önemli mi var reklamı amacını?


4
HTML örneğiniz, aradığınız şeye tam olarak uymuyor gibi görünüyor, teknik belgeler diğer belgelerden çok mu farklı? HTML'nin temel amacı, belgelerin birbirlerine atıfta bulunmalarını kolaylaştırmak için 1989'dakiyle aynıdır. IMHO HTML, aradığınız şeyin tam tersidir.
yannis

5
Uzun cevaplar listesine bakıldığında; Belki de tam tersi soru daha ilginçtir: Hangi (popüler) dil sadece amaçlandığı amaç için kullanılır?
Jaap

@Yannis: İyi nokta. Bu en iyi örnek değil ve gerçekten iki şekilde de tartışılabilir. Kaldırmak için düzenlendi.
Jon Purdy

@ Jaap: Ben de aynı şeyi düşündüm!
Leonbloy

2
Bu konuda yanlış olabilirim ama çoğu dilin yaratıcılarının amaçladıkları için kullanılmadığından eminim. Sanırım bunun en büyük nedeni, yabancıların, bir dilin sahip olduğu potansiyel hakkında daha açık fikirli olmalarına yardımcı olacak ne kullanılması gerektiğini bilmemeleri.
Kenneth,

Yanıtlar:


118

Lisp . McCarthy başlangıçta bir kaç basit notasyonun turing tam bir dil oluşturmak için yeterli olduğunu göstermek için Lisp'i bir makalede belirtti. Lisp'in makine kodunda uygulanabileceğini görünce şaşırdı (Steve Lissel ilk Lisp tercüman uygulamasını yaptı). Lisp yaygın olarak AI programlama için kullanılır.


70
+1, Lisp bir programlama dili olarak tasarlanmamıştı ! Bunun üstesinden gelebileceğini sanmıyorum.
Kilian Foth

7
OTOH, biri LISP'nin programlama ve matematik arasındaki sınırda kullanılmak üzere tasarlandığını iddia edebilir ve orada kalır.
MSalters

1
McCarthy'nin Lisp'i sınıflarında bir örnek olarak kullandığına ve bunun için bir derleyici yazmaya niyetli olduğuna inanıyorum, ancak bir gün sınıfta, değerlendirme işlevini el ile kodlamanın tercüman kullanacağını ancak elbette 'hiç kimse bunu yapmak istemeyeceğini' söyleyeceğini belirtti.
Steven A. Lowe

Lisper arkadaşlarım bana AI’da artık kullanılmadığını söylüyor, ancak her yerde hala bir uygulaması var .
greyfade

111

Java başlangıçta gömülü sistem programlaması için tasarlanmıştı. Wikipedia'dan "Java başlangıçta interaktif televizyon için tasarlandı" . Ancak, Uygulama ve Web programlama için oldukça popüler hale geldi.


4
Huh. Bunu düşünmediğime inanamıyorum. Muhtemelen kanonik bir örnek ... ama henüz şaşırmayacağımı söylemek değil.
Jon Purdy

Yine de, Java aslında gömülü işler için serbest bırakıldı mı (web için tanıtılmasından sonra gelen gömülü java'dan önce)?
Marcin

Java tasarımındaki en önemli tasarım öğesi, güvenilmeyen kodu çalıştırma becerisiydi.

13
hikaye daha da kötü: A) gömülü sistemler için tasarlanmıştı. B) ancak web sayfalarına gömülene kadar ışığı hiç görmedim. C) 'enterprisey' web uygulamaları için kullanılana kadar hiç saygı görmedi ve D) sonunda birçok telefon işletim sistemine dahil edildi; ancak bir donanım denetleyicisi olarak değil, bunun yerine bir GUI platformu.
Javier,

10 yıldan fazla bir süredir set üstü kutulara yerleştirmek için bir proje yapıldı - OCAP veya tru-2way'e bak
Bill K

32

Lua, öncelikle yapılandırma dili olarak tasarlandı ve oyunlar için en popüler betik dili olarak bir niş bulmaya başladı (çünkü kullanıcı dostu sözdizimi ile küçük, hızlı, güçlü, taşınabilir, kolay genişletilmiş ve gömülü). Bunu kullanmak için en popüler oyun olan World of Warcraft, XML kullanmak yerine yapılandırma için gerçekten kullanılmıyor.


... ve şimdi LuaJIT ile gerçek zamanlı işleme uygulamalarında giderek daha fazla kullanım buluyor
Javier


@ lukas: "Gerçekten değil" ne ? Selefi olan SOL ve DEL'in kontrol akışına bile sahip olmadıklarını, sadece yapılandırma dilleri olduklarını unutmayın. Lua, programlama desteğini içermek üzere bu yapılandırma dillerinin uzantısıydı.
Çamur

“Lua öncelikle bir yapılandırma dili olarak tasarlandı” derim bir programlama dili olarak.
Lukasz Madon

7
Belki de "öncelikli olarak tasarlanmış" yerine "amaçlanan amaç" demeliydim. Kullanım amacı SOL DEL kullanılan edildi Lua kullanmaktı. Bunlar, kullanıcıların programlama özelliklerini talep etmeye başladıkları yapılandırma dilleriydi. Lua bu ihtiyacı karşılamak için yaratıldı. Yazarların kendilerinin de belirttiği gibi , “Lua'nın oyunlara yaygın olarak dahil edilmesi bizim için sürpriz oldu. Lua için bir hedef olarak oyun geliştirmemiz gerekiyordu.” OP'nin tam olarak aradığı şey buydu, değil mi?
Çamur

32

Larry Wall'in perl için asıl amacı " rapor işlemeyi kolaylaştırmak için genel amaçlı Unix kodlama dili " idi ve kılavuz sayfası dili şöyle açıklıyor:

Perl, isteğe bağlı metin dosyalarını taramak, bu metin dosyalarından bilgi çıkarmak ve bu bilgilere dayanarak raporlar yazdırmak için optimize edilmiş bir çeviri dilidir.

Ve tabii ki adam sayfası da Perl'in Pratik Çıkarma ve Rapor Dili anlamına geldiğini söyler (asıl isim, Wall zaten varolan bir PEARL dili keşfettiğinde değiştirilen , orijinal Pearl isminin yanlış yazılmasıdır ).

Perl o zamandan bu yana uzun bir yol kat etti, çünkü tanrıların evreni işlediği dil .

görüntü tanımını buraya girin


23
İnsan bunu düzeltmeli: Patolojik Eklektik Çöp Lister
Richard

3
Kısaltmanın birden fazla yolu var! Çok Perly

Perl'in kısaltması aslında bir geri kısaltmadır.
CanSpice

1
@DarkTemplar Tercümanlık şeklim, perl'in hemen hemen her yerdeki yolunu sardığı şeklinde. Mütevazi başlangıcından itibaren perl çok popüler bir web dili, çok popüler bir betik dili, biraz popüler çok amaçlı bir dil, normal ifade sözdizimi kesin bir şey haline geldi, başka bir dili (php) vb. Doğurdu. Ayrıca soruyu kabul eden cevap olan lisp'i de referans aldım, bu yüzden iki dilin ilişkisinin eğlenceli (yanlış olsa da) bir ifadesi olduğunu düşündüm (biri gerçek, biri gerçekte kullanan kişidir).
yannis

1
@DarkTemplar Yeap. Bu öyle TIOBE endeksinde ilk on . Elbette TIOBE endeksini çok ciddiye almazsınız, bu oldukça göreceli ve özneldir. Ama yine de dil popülerliğinin iyi bir göstergesi.
yannis

28

JavaScript'in de bu soruya uyduğunu tahmin ediyorum, çünkü Netscape günlerinde Brendan Eich'in LiveScript'in gelecekteki sürümlerinin bugünün web adı verilen "uygulamaları" oluşturmak için kullanılacağını düşünmemiştim .

JavaScript, basit form doğrulamalarından ve görüntü aktarıcılardan , hem işlevsellik hem de güzellik açısından çevrimdışı uygulamalara rakip olabilecek güçlü bir araca taşındı .

Ne yazık ki, sanırım çoğu kişi hala oyuncak olarak görüyor.


31
İlginç olan şey, web'in assembly dili olma yolunda ilerlemesidir. Başka bir deyişle, başka hangi dilleri aşağı derlenmektedir ve idam. Ben Brendan Eich beklenen inanmıyorum o .

3
eklemek için bir şey var: Bu sadece bir müşteri tarafı betik dili değil. Node.js veya rhino gibi pek çok proje javascript'i sunucu tarafı dili olarak kullanıyor
gion_13

Sadece merak ediyorum, fakat "istemci tarafı betik dili" ile "sunucu tarafı dili" ....... nedir?
Karanlık Tapınakçı

@DarkTemplar. Sunucu tarafında bir betik dili sunucuda çalıştırılır ve çıktısı tarayıcıya gönderilir. Bir istemci tarafı komut dili, tarayıcıya olduğu gibi gönderilir ve orada çalıştırılır. (Tabii ki, sunucu tarafı dili, isterseniz istemci tarafı dilini çıkarmak için kullanılabilir.) Çoğu tarayıcıda çalışan tek dil javascript'tir.
TRiG

19

Erlang. Ericsson laboratuvarlarında uzun süre önce, muhtemelen anahtarlama ve erişim cihazlarının hatları için telefon uygulamaları geliştirmek için icat edildi. Şimdi ilginç bir eşzamanlılık kavramıyla umut verici bir genel amaçlı dinamik dile dönüşmüştür.

Gelecekte, telco dünyasından çizgilerini BT dünyasına geçen ve oradan evrimleşen, özellikle de protokollerin modellenmesi ve doğrulanması için tasarlanan diller, eğer daha ilginç olurdu.


Ve node.js'nin ilhamlarından biri değil miydi?
dodgy_coder

Bunun uygun olduğunu sanma. Erlang'ın telefon için icat edilmesinin nedeni, genel bir dinamik eşzamanlılık diline ihtiyaçları var. Hala öyle.
Alan Baljeu


14

PHP aslında Kişisel Giriş Sayfası anlamına geliyordu , ancak bugün biraz daha büyük web uygulamaları için de kullanılıyor.


18
Tabii ki, en büyük PHP kullanıcısı, Facebook, kişisel ana sayfa pazarında hala birçok yönden.
Jaap,

3
"PHP / FI, 1995 yılında Rasmus Lerdorf tarafından, başlangıçta çevrimiçi özgeçmişine erişimin izlenmesi için basit bir Perl betiği seti olarak oluşturuldu." Uzun bir yol geldi bebeğim.
nickf

PHP hala bir Web dili olmasına rağmen, biraz tersine çevrildi: PHP, HTML içinde küçük pasajlar olarak gömülmek üzereydi, oysa ki birçok proje artık PHP içinde HTML dizeleri oluşturuyordu. Yine de <?phpdosyanın başında bir etikete ihtiyaçları var !
Warbo

14

VBScript'in kötü amaçlı yazılım yazmak için kullanılmadığından eminim, bunun için oldukça yaygın bir kullanım.


1
Bu biraz sert düşünmüyor musun? Java ve C'nin kötü amaçlı yazılım payları paylaştı.
Jeremy

@JChild: Yorumunuzdan bu yana birkaç yıl geçti. Ancak o zaman bile, VB'yi savunmak yapılacak çok garip bir şeydi.
Magus

@ Magus VB bile değil. VBScript. Bilirsin, .vbs uzantılı dosyalar. Otomatik olarak kabul ettiğiniz virüsler, onları gördüğünüzde virüslerdir.
user16764

13

Başlangıçta kodu daha genel hale getirmenin bir yöntemi olarak tasarlanan C ++ 'ta Şablon Meta Programlama'nın tamamlanmış olduğu bulundu ve bu güne kadar destekleme gibi kütüphaneler yoluyla C ++ dilini büyük ölçüde geliştirmek için kullanıldı.


8
... ve C ++ programcılarını aşırı uzun yapım süreleriyle gözyaşlarına
sokmak

8
ve korkunç hata mesajları.
DeadMG

11

TEMEL başka ünlü bir durumdur. Adı ( Acemi'nin Çok Amaçlı Sembolik Öğretim Kodu), öğrenim dili olarak kökenine işaret eder, ancak o zamandan beri biraz daha büyümüş.


24
heh - microsoft "acemi" yi "iş" ile değiştirdi ve milyonlarca emildi
Steven A. Lowe

11

VHDL ve Verilog (aka VerilogHDL) başlangıçta dijital devreleri ve bileşenleri tanımlamayı amaçlamaktadır . Bir dokümantasyon biçimi olarak ve bileşenlerin davranışını simüle etmek için kullanılmıştır. Daha sonra, Synopsys ve diğerleri, bu tanımları net bir kapı listesine çevirebilecek (bir altkümesi) teknolojiyi geliştirdiler ve bu da gerçek bir donanım üretmek için kullanılabildi.

VHDL ve Verilog, tarihsel nedenlerden dolayı Donanım Tanımlama Dilleri (HDL'ler) olarak adlandırılır. Bugün aslında donanım tasarım dilleri olarak kullanılıyorlar (aynı kısaltma).


Güzel, gerçek hayat modeli geliştirme odaklı
Jaap

@Mark Evet, VHDL, donanım tanımlama dili olan çok yüksek hızlı tümleşik devredir. Verilog tamamen farklı bir dildir. Verilog bazen Verilog HDL olarak da adlandırılır. en.wikipedia.org/wiki/Verilog
Philippe,

2
QHDL, VHDL'ye çok benzer ve kuantum bilgisayarların devrelerini tanımlamak için kullanılır. Köklerinden çok uzakta bir dili terk etmeyi hayal bile edemiyorum.
Mark Booth

@Mark Vay, bu ilginç "QHDL"! Google çok fazla ses gösteriyor. Referansın var mı?
Philippe

1
ACCU 2011 konferansında Paul Blacks'in "Programcılar İçin Kuantum Hesaplama" oturumunda mükemmel olduğunu öğrendim. Slaytları accu.org/content/conf2011/… 'de
Mark Booth

10

ML, bir teorem ispatcısı geliştirmek ve yazmak için bir dil olarak başladı. Teorem ispatcının "meta dili" idi.


Peki. Bunun geçerli bir cevap olmasının sebebinin, asıl uygulamasının şu anda derleyiciler ve diğer dil araçları olduğu (en azından bildiğim kadarıyla) olduğunun belirtilmesi önemlidir.
Jon Purdy

6
+1, ancak ML’nin “oldukça popüler” olduğunu söylemek biraz gergin
nikie

Belki, ancak bugün doğrudan kullanıcılarına ek olarak, hemen ardından gelen her bir yazılı dili etkiledi.
Ryan Culpepper

7

C
Başlangıçta Unix işletim sistemiyle birlikte kullanılmak üzere geliştirilmiştir. Ancak Dil çok popüler oldu, Dennis Ritchie bile şaşırdı.
Ünlü kitabında C programlama dili . Ritchie, "UNIX işletim sisteminin dili olarak kökenlerinin çok ötesine yayıldığını" belirtti. ve uygulama geliştirmede popüler bir dil haline gelmesinin ne kadar şaşırttığı.


11
Aslında, platformlar arası bir biçimde sistemler ve düşük seviye uygulamalar geliştirmek için tasarlandı. Popülerliğine rağmen orijinal hedefleriyle uyumlu olmaya devam ediyor, bu yüzden uymuyor.
Jon Purdy

3
@Jon Kendini ayağından vurmanın en kolay yolu haline gelme amacını daha da arttırdığı için uygun.
yannis

1
@Yannis: Haha, doğru. Ama ben asıl amacı tamamen değişen dilleri soruyorum, sadece daha fazla amacı kapsayacak şekilde büyüyenleri değil.
Jon Purdy

C'nin karışık kod yarışmaları için ana dillerden biri olarak popüler olduğunu da ekleyeceğim.
Peter G.

İşletim sistemini uygulamak için tasarlanmadı mı?
Nikko

3

C ++ başlangıçta C ++ ' da nesne yönelimli programlamayı kolaylaştırmak için “sınıflı C” olarak tasarlandı.

Şablonlar daha sonra güçlü bir şekilde yazılan kap sınıflarının uygulanmasını sağlamak için sonraki bir sürümde sağlanmıştır. Ancak daha sonra bu şablonların bir Turing-complete derleme zamanı programlama dili oluşturdukları fark edildi.

Sonuç olarak, birçok uygulama artık C ++ 'ı nesne tabanlı bir programlama dili olarak değil , derleme zamanı polimorfizmine ve metaprogramlamasına dayanan algoritmalara dayalı bir programlama dili olarak kullanmaktadır.


7
Ancak C ++ genel amaçlı olarak tasarlanmıştır ve genel amaçlı bir dil olarak kullanılır.
BenjaminB

@ Ubiquité C ++ 'in genel amaçlı bir dil olarak tasarlandığını sanmıyorum. Daha doğrusu, bu kullanılmak üzere tasarlanmıştır için farklı amaçlar (ama özellikle sistemler programlamada). Ama oldu değil birden ile çalışmak üzere tasarlanmış paradigmaların .
Konrad Rudolph

Aslında, çoklu paradigma niteliği, tasarımında, sadece OO özelliklerini C'ye vidalamakla kalırken, daha uygun olan yerlerde daha prosedürel özelliklerini kullanma yeteneğini koruyarak doğasında var.
Jon Purdy

@ Jon Tamam, bunu kabul edeceğim. Ancak, genel programlama ve şablon metaprogramlaması bu özellikler arasında değildi. Ve bugünlerde C ++, bu özellikleri destekleyen tek (ve tartışmalı olarak ana) dilden biridir.
Konrad Rudolph

Çok doğru. Cehennem, jenerik programlama için destek ve constvardır ++ ben C kullanmak en önemli iki nedeni.
Jon Purdy

2

ADA - başlangıçta aviyonik için DoD sözleşmesi kapsamında tasarlanmıştır. Hala bu uygulamada kullanılmasına rağmen, örneğin gerçek zamanlı iş orta-gereçleri için de popülerdir.


5
Genel amaçlı bir dil olarak inşa edildi. DoD, kullanılan farklı dil miktarını azaltmak için her şey için kullanışlı bir dil istedi.
BenjaminB

Bu oldukça komik. Ada, açıkça farklı dillerin sayısını azaltmak amacıyla yaratılmış bir dildi. Bu metriğe göre ("bir amaç için tasarlanmış, başka bir amaç için tasarlanmış") Ada, başka bir dil karşıtı dil olan Lisp ile listenin başına kadar seçilmelidir.
Jared Updike

2

“Bir dilin amaçlanan amacı gerçekte nasıl kullanıldığına ya da popüler olup olmadığına dair herhangi bir etkiye sahip midir?”

Bir dilin amaçlanan amacının gerçek kullanımı ve popülerliği üzerinde fazla bir etkisi olduğunu sanmıyorum: Baştan beri yenilikçi, esnek ve çok yönlü olması için tasarlanmış harika diller var, ancak çok özel dikey pazarlar - örneğin Eyfel. OTOH, Basic, Pascal, C vb., Orijinal olarak sınırlı, belirli amaçlar için tasarlanmasına rağmen yıllarca manzaraya hakim oldu.

IMO Pazarlama / finansal ve destek hususları, belirli dillerin yayılması ve genişletilmesinde her zaman önemli bir rol oynamıştır. Örneğin: Borland TurboPascal ile geliyor ve paketleri, pazarlıyor ve destekliyor. MS C # ile gelir ve paketleri, pazarlar ve destekler. Sonuç olarak, bu diller popüler hale geldi, üçüncü parti araç endüstrileri büyüdü ve gittikçe daha fazla geliştirici ve işletme grupta atladı.

Ancak son birkaç yıldır, OpenSource dilleri ve araçları dinamiği değiştiriyor ve diller artık pazarlamadan ziyade 'liyakat'a' göre popüler hale geliyor - örneğin Ruby, Python ve Perl. Ancak bu, mucitlerin 'niyeti' nedeniyle, dilin uzatma ve kolay kullanım için yarattığı potansiyel kadar fazla değildir.


2

Orijinal niyetinden tekrarlanmayan popüler bir dil olduğunu sanmıyorum. C bile başlangıçta taşınabilir bir işletim sistemi (unix) yapmak için yazılmıştı.

Belirli bir hedefi göz önünde bulundurmadan, gerçekten genel bir programlama dili yazma girişimi, kısıtlama ve odaklanma eksikliği nedeniyle sefil bir şekilde başarısız olacaktır.


postscript - her yerde (hemen hemen her bilgisayarda ve yazıcıda), ancak yalnızca grafik yazdırmak için kullanılır. Yine de, pdf'ler içinde kullanıldığında bunun tekrarlandığını iddia edebilir.
13,

1

Ruby'nin şiir yazmak için bir dil olarak tasarlandığını duydum , oldukça güzel bir kod da yazabildiğiniz ortaya çıktı!

Sana karşı dürüst olacağım. Ağlamanı istiyorum. Ağlamak için. Tatlı tatlı fısıldamak için. Bu kitap Ruby'ye dokunaklı bir rehberdir. Bu, kodun gözyaşı dökülecek kadar güzel olduğu anlamına gelir. Bu, ertesi sabah bu kitabın kucağında uyanmanızı sağlayan sert hikayeler ve kasvetli gerçekler anlamına geliyor.


2
Sesler ... ilginç. Herhangi bir kaynak?
Anto

Ruby bağlantısı, Ruby'ye sanatsal bir şekilde öğretmek için yazılmış bir kitaba götürür. Benim cevabım, Ruby'nin şiir gibi yazıldığını iddia eden bu kitapla ilgili bir şaka. Gerçekte kişi, Ruby'nin genel amaçlı bir programlama dili olarak tasarlandığını söyleyebilir, ancak Ruby koduna şiir olarak bakmaları için insanlara ilham verdi.
Tinco
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.