Söz konusu şirket için özel olarak tasarlanmış programlama dilini öğrenme [kapalı]


10

Neden birisi kendi kütüphanelerini, mantıklarını vb. Akışa kendi dilinizi geliştirmek yerine başka bir şeyle gitmek daha kolay değil mi?


6
Vahşi doğada sahip olduğumuz pek çok "yeni" dil "eski" diller için tasarlanmış kütüphaneleri kullanabilir: örneğin: C ++ C kütüphanelerini kullanabilir, Scala Kotlin ve diğerleri JVM üzerinde çalışan herhangi bir kütüphaneyi kullanabilir, Typescript JS kütüphanelerini kullanabilir. Yani yeni bir dile sahip olmak lib desteğini kaybetmek anlamına gelmez ...
Timothy Truckle

3
Neden bir drag arabası yapmak yerine drag yarışına gitmek için bir dragster inşa edesin ki?
candied_orange

3
Ya da gerçekten, herhangi bir programlama dilinin oluşturulmasının nedenlerini ve rasyonelini araştırın. Bazı insanlar, kendi dilinizi yaratıncaya kadar gerçek bir bilgisayar bilimcisi olmadığınıza inanırlar. Bu, silah tozunu (ve evinizin küçük bir bölümünü havaya uçuracak kadar) gerçek bir kimya mühendisi olmaya benziyor.
candied_orange

4
Erlang da bu şekilde doğdu: yanılmıyorsam, başlangıçta Ericsson'da dahili kullanım için geliştirildi.
Giorgio

3
Bir şirket için özel olarak tasarlanmış bir dil aptaldır, diğer yandan, şirketin içinde bulunduğu bir sorun alanı için özel olarak tasarlanmış bir dil bazen oldukça yararlı olabilir. Dilin tasarımı ve mimarisi, problem alanını çözmeyi / ifade etmeyi çok daha kolay hale getiren şeylerle sınırlı olduğunda, bazen genel amaçlı programlama için yararlı olmaktan ziyade, ikincisine değil, ikincisine sahip olduğunuzu biliyorsunuz.
Yalan Ryan

Yanıtlar:


25

Sadece "yeni dil yapmak istiyoruz" diyen birisinin değil, genellikle uzun sürecin bir ürünü olduğunu anladığınızda çok daha kolaydır.

Genellikle bazı problemlerin alana özgü basit bir dil kullanılarak çözülebileceği fikri ile başlar. Amaç genellikle uzman olmayanların bu dili kullanmasıdır, bu nedenle basittir ve genellikle güçlü yazma ve modüller gibi özelliklerden yoksundur.

Çok uzak çok iyi. Ama sonra, insanlar dil tarafından çözülemeyen sorunlara çarpmaya başlarlar. Bu nedenle, bu sorunları çözmek için yavaş yavaş yeni "özellikler" eklenir. Süreç yavaş olduğu ve sık görülmediği için, sorunların çözüldüğü sürece bu yeni özellikleri doğru bir şekilde tasarlama motivasyonu yoktur.

Zamanla, yeni dil, basit bir alana özgü dilden, genellikle çelişkili, kafa karıştırıcı anlambilim ve takip edilmesi zor sözdizimi kurallarıyla karmaşık bir "genel" amaç diline dönüşen özellikler kazanır.

Ve insanlar böyle büyük bir canavar yarattıklarını fark ettiklerinde, onu öldürmek ve uygun şekilde tasarlanmış bir dille değiştirmek için zaten çok geç.

Belirli şirketlere bağlı olmayan bu şekilde gelişen birkaç dil vardır, öksürük JavaScript öksürük PHP öksürük .


10
Harika bir cevap ve JavaScript'in sorunları olsa da, PHP ile aynı cümleye yerleştirmenin adil olduğunu düşünmüyorum. Bu, "Bill ve Ted'i mahallemizden çıkarmamız gerekiyor, onlar suçlu!" Ancak Bill (JavaScript) bir jaywalker ve Ted (PHP) bir seri katildir.
TheCatWhisperer

12
@TheCatWhisperer Ben katılmıyorum. JavaScript PHP kadar kötü, hatta daha da kötüdür. Çünkü JavaScript kullanmanız (veya aktarmanız) gerekirken PHP güvenli bir şekilde yok sayılabilir.
Euphoric

2
bu çoğunlukla geçerli bir noktadır.
TheCatWhisperer

1
@ Euphoric WASM'i bekleyelim , belki sahne değişecek ...
Kroltan

WASM için @Kroltan +1!
CraigR8806

15

Akışa kendi dilinizi geliştirmek yerine başka bir şeyle gitmek daha kolay değil mi?

Elbette, ama bunu saçma bir sona kadar takip etmek için, eğer kimse yeni diller geliştirmediyse, hepimiz mecliste her şeyi yazardık.

Bazen akış olmaz. Yeni diller ortaya çıkar, çünkü birisinin yeni bir şey icat etmek isteyen bir dil hobisi ya da zaten var olanın karşılanmamış ihtiyacı olan bir şirket olsun, çizmek için bir kaşıntısı vardır.

John Backus , 1953'te IBM Mathematical Formula Translating System'i önerdiğinde tam olarak böyle oldu . Bilimsel kullanıcıların matematiksel formülleri bir araya getirmekten daha kolay bir şekilde belirtmelerini istedi. Bu tescilli ürün, derleme olmayan ilk programlama dili oldu ve bunu Fortran olarak biliyorsunuz.

Fortran, bu rotaya ilk giden yer olan Erlang, hemen hemen poster çocuğu. Ericsson, telefon anahtarları için yazılımın geliştirilme şeklini geliştirmek istedi ve ihtiyaç duyduklarına özgü özelliklerle prototip oluşturmak için bir dil icat etti. İlk keşfettiğimde, paket servisim, 1986'da mevcut olan diğer diller tarafından iyi hizmet edilmeyecek gerçek bir sorunu olan insanlar tarafından geliştirilmesiydi. Erlang, sizin gibi tescilli, şirket içi bir ürün olarak kaldı. meslektaşım on yıldan fazla bir süre sonra açık kaynaklı hale gelinceye kadar karşılaştı ve şimdi bu ana akım bir dil.

Hem Go hem de Scala, şeylerin büyük düzeninde nispeten genç dillerdir ve meslektaşınızın şirketinde kullanılan dilin her ikisinden de önce olması tamamen mümkündür. Yapması gereken tarihi, neden var olduğunu ve neden kullanılmaya devam ettiğini sormaktır.

On yılı 2003 ile 2013 yılları arasında, köklerini 1970'lerin sonlarında olan kendi dilini içeren sektöre özgü bir ortamdan yoğun olarak yararlanan bir şirkette çalışarak geçirdim. Bazı yeni diller daha uygun yedekler olsa da (ve onlar için kancalar zamanla aşılanmıştı), bu endüstrinin buna yeterince büyük bir yatırımı ve iyi bir iş vakası olmadığı kanıtlanmış büyük bir kod gövdesi vardı. başka bir şeye geçmek için.


-1

Bunu daha önce görmüştüm. Asla iyi çalışmaz. Bazı insanlar "burada icat edilmemiş" bir komplekse sahiptir. Genellikle bir şirketin tekerleği yeniden icat etmesine neden olur.

Bunu düşün. Bu yeni dil muhtemelen her zaman kırılıyor. Ayrıştırıcı, derleyici, VM, linker, her neyse ... Şimdi insanların rastgele sorunları hata ayıklamak için saatlerce harcayacağı binlerce hata var. Hepsi, diğer dillerin sahip olmadıklarını düşündükleri şey için.

C / C ++ hepsi gibi işletim sistemlerini yazmak için kullanılır. Yine de birileri farklı bir şeye ihtiyaçları olduğunu düşündü.


7
Görünüşe göre Kotlin'i hiç görmedin. Veya bu konu için Javascript veya C #. Fog Creek Software yıllarca Wasabi (VB'ye dayalı) adlı kendi programlama dilini kullandı (kuşkusuz teknik borç nihayet onları yakaladı ). Bu yüzden kesinlikle işe yaradığı durumlar var.
Robert Harvey

1
Hatırlayabildiğim kadarıyla, C #, Microsoft uyumlu olmayan bir Java uygulaması oluşturmaya çalıştıktan sonra doğdu, Sun tarafından dava edildi ve kayboldu. cnet.com/news/sun-microsoft-settle-java-suit Artık Java olarak adlandırılamadıklarından, başlangıçta Java'ya çok benzeyen kendi dillerini geliştirdiler.
Giorgio

1
"Bu yeni dil muhtemelen her zaman kırılıyor" - dil tasarımınız tüm uygulama hataları sınıfından kaçınmanıza izin veriyorsa, bu kabul edilebilir bir takas olabilir
Eric

16
Hiç C duydunuz mu? Bildirildiğine göre, tek bir bilgisayarda tek bir işletim sistemi için şirket içinde geliştirildi. K&R neden PL / 1, BCPL veya Algol 68 gibi işletim sistemlerini yazmak için kullanılan bir şeyi kullanmadı?
17'de
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.