“Güçlü” dil nedir?


22

Sık sık kavga eden insanları, en sevdikleri dilin diğerlerinden daha "güçlü" olduğunu gördüm. Bir programlama dilini tanımlamaya gelince, nesne yönelimli bir dilin ne olduğunu veya dinamik bir dilin ne olduğunu anlayabiliyorum, ancak hala tam olarak "güçlü" bir dilin ne olduğunu bulamıyorum. Düşüncelerin nelerdir?


5
Bir dil, kullanıcısı kadar güçlüdür.
ysolik

6
@ sisolik mutlaka doğru değil. birine berbat bir dil verebilir ve ne kadar ileri gittiklerini görebilirim. bir operasyonu var, NOOP! =)
Mark Canlas

2
@Mark uçları konuşuyorsak, o zaman haklısın. Bununla birlikte, bugünün az ya da çok kullanılan dillerini düşünürseniz, kullanıcı bunun büyük bir bölümünü oluşturur.
ysolik

1
PowerBASIC: Bundan daha güçlü olamaz. ^^
gablin

1
@ysolik: "bir dil kullanıcıdan daha güçlü olamaz" demek daha doğru olur.
Duncan Bayne

Yanıtlar:


32

"Güçlü" bir dilin ne olduğunu ilk önce "güçlü" kelimesini tanımlamaksızın tanımlayamayız.

Literal gücün tanımı "potens" olacağını, ve hepimiz derleyicilerinin büyük çoğunluğu kabul düşünüyorum - ve Turing tamamlama olmasalar bile birçok tercümanlar - talimatı yürütmek için işlemciyi alma eşit derecede iyi bir iş yapmak . Kelimenin tam anlamıyla tanımına gelince, sorunun cevabı "neredeyse her dil" olacaktır.

Pratik olarak, gerçekten orada durmalıyız; "Güçlü bir dil" tanımlaması biraz "iyi insan" veya "kaliteli ürün" tanımlamak gibidir. Orada kesinlikle bir hayır üzerinde anlaşmak herkesi alabilir veya uzmanların bile çoğunluk olabilir bu kelimelerin objektif tanımı, ve en tanımları basitçe sona soruyu yalvarıyor . Kiminle konuştuğuna bağlı olarak, güç aşağıdakilerden biri olabilir:

  • Çok çeşitli ortak görevleri yerine getirmek için zengin bir genel amaçlı çerçeve veya kütüphane
  • "Bir şeyi yapan ve iyi yapan" bölgeye özgü karmaşık bir sözdizimi
  • Makine fonksiyonlarına doğrudan erişim, yani düşük seviyeli kod yazma yeteneği
  • Makine düzeyinde kavramları soyutlama, yani yüksek seviye kod yazma becerisi
  • Yansıma, DI ve statik analiz gibi gelişmiş stratejiler sağlayan çok zengin bir tip sistem
  • Programcıların sadece halletmelerini sağlayan çok gevşek tipte bir sistem (zorlama, vb.)
  • Her şeyi kavramsal doğrulama sağlayan bir nesne olarak ele alma becerisi
  • Her şeyi matematiksel doğrulama sunan bir fonksiyon olarak ele alma yeteneği
  • Otomatik bellek ve kaynak yönetimi (GC, RAII) daha az hataya neden oluyor
  • Potansiyel olarak optimize edilmiş performansa yol açan manuel bellek ve kaynak yönetimi
  • İyileştirmeye yol açan minimum miktarda sözdizimsel gürültü okunabilirliğe
  • Daha sığ bir öğrenme eğrisi sunan daha çok İngilizceye benzer bir sözdizimi
  • Çok kısa kod yazabilme (yani üçlü operatör, boş birleştirme, boş uzatma)
  • Yetersizlik yazma potansiyel olarak kafa kodu (örneğin, bir üçlü operatörler, vs.)

Burada neler olduğunu herkes görüyor mu? Hemen hemen her kurşun noktası özelliği "güç" işareti olarak yorumlanabilir ve bunun tam tersi de olabilir!

Birileri, bir yerlerde, açıkça değişken değişkenlerin dili çok güçlü kılacak harika bir fikir olduğunu düşünüyordu . Yargılamayacağım; Ben PHP adamı değilim.

Tüm bu kutsal savaş saçmalıklarının yerine hepimizin bu Gerçekten Basit Tanımları kullanmasını öneriyorum:

En güçlü dil, en yüksek kalitede ürünü en kısa sürede en düşük maliyetle göndermenizi sağlayan dildir.

Belirsiz? Sen Bu yüzden kendisini profesyonel olarak tanımlamak isteyen herkes hem programlama kavramlarını hem de proje alanını anlamalıdır . Bu, sizin için neyin "güçlü" olduğuna karar vermenin tek yolu.

Aksi takdirde, silah savaşına gerçekten büyük bir bıçak getiriyor olabilirsiniz .


1
+1 Bu, çeşitli dil gücü kavramlarını dahil etmeye çalışan tek tanımdır. Özellikle, birbiriyle çelişen özelliklerin ikisinin de güçlü olabileceğini gösterme şeklini seviyorum. Bilgisayar Bilimi, dil seçiminde bile, takas bilimidir.
CodexArcanum

11

Belki önyargılıyım çünkü sistem programcısıyım. Tüm çekirdek, sistem, sunucu ve uygulama programlaması için kullanılan bir programlama dilinin ya da çoklu programlama paradigmalarını desteklediğini ya da her ikisinin de "güçlü" olarak adlandırılabileceğini düşünürdüm.

C, C ++, D güçlü, ama belli ki bu sadece benim düşünceme göre.


Java'yı çekirdek düzeyinde programlama için kullanırsınız yoksa sizi yanlış mı anlıyorum?
Davy8

@ Davy8, haklısın, kendi tanımıma göre Java eklememeliydim.
grokus

5

Turing bütünlüğünün ötesinde birkaç güç tanımı vardır. Mark, "Paul Graham tanımı" olarak düşünme eğiliminde olduğumu belirtti. Oldukça iyi bir tanım, ciddi bir kusur ile: yanlış. Teorik olarak dil gücünün çok iyi bir tanımıdır, ancak teori ile pratik arasındaki fark hakkında ne söylediklerini biliyorsunuz ...

Eğer herkes mükemmel bir kod yazabiliyorsa, sadece kusursuz bir şekilde kusursuz değil, aynı zamanda mükemmel bir şekilde gelecek için de dayanıklı, tutarlı bir şekilde Paul Graham tanımı doğru olacaktır. Ama belli ki durum böyle değil. Gerçek dünyada, yazılım mühendisliğine giren zamanın ve çabanın çoğu, ürünün ilk yaratılmasıyla değil, daha sonra bakım ile ele alınmaktadır. Hangi istatistikleri dinlediğinize bağlı olarak (ve muhtemelen projeden projeye biraz değişiyorsa) bakım, bir programa harcanan toplam çabanın% 60 ila% 90'ını oluşturur.

Bakım genellikle kodu ilk yazan kişi dışındaki kişiler tarafından ve çoğu zaman kodun ilk yazılmasından aylar ya da hatta yıllar sonra yapılır; bu, orijinal kodlayıcıya bile, "başkalarının kodu" olabileceği anlamına gelir. puan. Bakım sırasında üretken olmak istiyorsanız, kodun orijinal amacını okuyarak hızlıca tespit edebilmeniz gerekir.

Bu nedenle, daha güçlü bir dil, kodun hızlı bir şekilde okunmasını kolaylaştıran, kodun hızlı yazılmasını kolaylaştıran bir dil değildir . İkisi arasında adil bir örtüşme olacağı eğiliminde olmakla birlikte, kavramlar çoğu zaman çapraz amaçlara da sahiptir, çünkü terse sözdizimi çoğu zaman bir derleyici / tercümanın bir bakım programcısından çok daha kolay bir şekilde çıkartabildiği konusunda ayrıntıları vermez.

EDIT: Bir dilin gücünü tanımlamanın bir başka önemli noktası var: ifade edebildiğiniz kavramlar yelpazesi ve her iki ucuna ne kadar kolay vurabileceğiniz. Paul Graham, bunu bir soyutlamanın ne kadar yükseğe ulaşabileceğinizi değerlendirmekten hoşlanıyor, ancak bu sadece yarısı. Gerektiğinde gidemeyeceğiniz altta bir soyutlama limiti uygulayan herhangi bir dil sakattır, çünkü soyutlanan ayrıntılar bir sebepten ötürü oradadır. Bu, COBOL gibi kolay okunabilen bir oyuncak dil ile kolay okunabilen güçlü bir dil arasındaki farktır: COBOL'de işaretçiler yoktur ve herhangi bir hesaplamayı ifade edebileceğiniz, hatta COBOL için uygun olmayan satır içi düzeneğe erişimi yoktur.

COBOL ayrıca soyutlama spektrumunun üst kısmına vurmada da iyi değildir. Wikipedia'ya göre, algoritmalar ve veri yapıları oluşturmayı zorlaştıran "kullanıcı tanımlı türler ve kullanıcı tanımlı işlevler" yok.


1
Bununla ilgili sorunum, COBOL'un çok güçlü bir dil olduğunu göstermesi.
David Thornley

2
Anladım Lisp'i tanımıyorsun? :)
dash-tom-bang

1
@Matt: Bu şey. Bir dilin ne için kullanılacağı, bir dilin ne için kullanılabileceği ile sınırlıdır ve Python ile yapabileceğiniz, bellekle ilgili ayrıntıları soyutlamayan bir dilden çok daha az şey vardır.
Mason Wheeler

3
-1 Kısa olduğu için, daha etkileyici kodun bir şekilde sürdürülmesi zordur. Hem dil gücünün ortak anlamlarını (dışavurumculuğa karşı açıklık) hem de bunları iki fikirden sadece yarısını ifade eden tek bir konsepte soktunuz.
CodexArcanum

1
@ Jörg W Mittag: Haklısın, ancak alıntı yaptığım cümlenin donanım kaynaklarının doğrudan kontrolüne atıfta bulunduğunu düşünüyorum (örn. Hafıza): C ++ size daha fazla kontrol sağlıyor. Elbette, sanal bir makine kullanıyorsanız, tam kontrol sizdedir, ancak Mason Wheeler'ın gerçek makinenin kontrolüne sahip olduğunu belirtmiştim.
Giorgio,

4

Bu, uzun süre tekrar tekrar tartışıldı (örneğin, comp.lang.lisp, birkaç kez). Hiç kimsenin "doğru" bir cevap bulabildiğini sanmıyorum ama bir çok insan beni açıkça yanlış olarak vuran cevaplar buldu.

Burada gördüğüm cevaplarda, Mason Wheeler'ın cevabını seçmeme izin verin. Bir yandan, kapsadığı konular önemlidir - ancak diğer taraftan, onları “güç” ile ilgili olarak adlandırmayı tam olarak hayal edemiyorum. Biraz daha Honda mini kamyonetinin üst yakıt sürükleyiciden daha güçlü olduğunu söylüyor, çünkü daha güvenli, daha sessiz, daha iyi yol tutuşu, daha fazla yolcu odası ve daha konforlu bir sürüş var. Bütün bunlar kesinlikle doğru ve hepsi önemli. Bu faktörler (diğerleri arasında) minibüsü çoğu insan için çok daha pratik ve makul kılar - ancak minibüsün motorunun sadece 250 beygirlik ürettiği gerçeğini değiştirmezler;

Elbette ki sorun, araçlarda neyin “güç” neyin neyin oluştuğunu neyin açık bir şekilde tanımladığıdır. Programlama dilleri ile ilgili olarak, tartışmanın, “gücün” bir parçası olarak ele alma, rahatlık, hız, kargo kapasitesi ve seyir menzilinin işlenmesi ile eşdeğer olduğu ortaya çıktı. Sonuç, kesintisiz çalışan ve ışıktan çok daha fazla ısı üreten iplik olma eğilimindedir. Temel olarak ortaya çıkan soruların çoğu, tamamen ilgisiz ve ortogonal özelliklere eklediğiniz önem derecesine kadar inmektedir - örneğin, MMU’yu, daha yüksek düzeyde fonksiyonlar yaratma yeteneğinden ziyade, daha az "güçlü" bir montaj dilinde programlama yeteneğidir. Haskell'de mi? En azından IMO, ikisini karşılaştırmanın anlamlı bir yolu ve hangisine anlamlı bir cevap yok. "

Bu nedenle, söylemekten nefret ettiğim kadarıyla, bu durumda, tek anlamlı cevabın temel olarak göreceli bir cevap olduğunu - güçlü bir dilin bulduğunuz şeyi başarmanıza yardımcı olduğunu söylemektir. Halkların hedeflerindeki farklılıklar, en "mutlak" güç ölçümlerini, en iyi ihtimalle anlamsız kılar.


3

Doğru kısalık ve esneklik dengesi.

Harika soru Birçok dilin "Tamamlanıyor" olduğu göz önüne alındığında, teorik olarak neler yapabilecekleri konusunda hepsini eşit gerekçelere koyabiliriz. Ancak bunu yapmıyoruz çünkü diller açıkça birbirinden farklı. Ve fark nedir?

Aradaki fark, çok az şeyle birçok farklı şey söyleyebilme yeteneğidir . En uç noktalara atlayabilseydik, sadece bir karakter, 'c' kullanarak bir içerik yönetim sistemini otomatik olarak başlatmak için en iyi dil olan bir dil yapabilirdim. Ama bunun amacı ne olurdu? Tabii, çok kısa olma anlamında güçlü , ama esnek değil. İstediğiniz şey, çok ayrıntılı olmadan pek çok farklı karmaşık şeyler söylemenizi sağlayan bir dildir. Montaj olmadan, güneşin altındaki herşeyin yeteneğine sahip, sonsuz esnek ama çok ayrıntılı.

Güçlü bir dil, mümkün olan en az uzunlukta birçok farklı şey söylemenizi sağlayan bir dildir.


1
-1. Üzgünüm, ama bu sadece bir yanılgı değil, aynı zamanda tehlikeli bir durumdur, çünkü üretkenliği daha da azaltabilir.
Mason Wheeler

@Mason Wheeler: Ayrıntılı olabilir misiniz?
Joey Adams,

@Joey: Bu soruya cevabımı gör.
Mason Wheeler,

1

Turing complete'a bastığınızda (ve bunu yapmak için bir dil kolaydır), "güç" bir anlamda söyleyebileceğiniz herhangi bir şeyin başka bir dilde söyleyebileceği anlamına gelmez. Mark Canlas'ın cevabı bunu anlatıyor : kısalık ve esneklik fark yaratıyor.

Bunu söyleyen Matthias Felleisen'in Programlama Dillerinin Anlatım Gücü Üzerine Yaptığı Makalesi ilginç okumalar yapar. İçinde, dillerdeki ifade ifade kavramını resmileştirmeye çalışıyor.


Bu arada, bu aslında doğru değil. Turing'in tamamlanmış fakat diğer dillerden daha az güçlü olduğu diller gördüm. Basit bir örnek: Yalnızca tamsayıları ve dizgilerini veri türleri olarak kabul eden bir dilden, aralarında dönüştürme yapamayacağından, tamsayılar üzerinde rasgele hesaplama yapmaktan ve sadece dizgiler üzerinde dizgi birleştirmekten ve karşılaştırmaktan bahsedebilirsiniz. (Böyle bir dille çalıştım.) Tamamlandı, ama dizelerde rasgele işlevler ifade edemiyor, bu nedenle daha fazla işlevsellik eklemek hesaplama gücünü artıracak.
reinierpost

@reinerpost - Turing-complete dilinin hala dizgilerdeki keyfi işlevleri hesaplayabildiğini, sadece farklı bir şekilde temsil etmeleri gerektiğini söyledi. Bütünlüğün tam olması, hangi veri türlerine sahip olduğunuz sorusuna diktir. Örneğin, bazı turing tam dillerin veri türü yoktur ve sadece işlevli her şeyi temsil eder - ve aritmetik için Church Encoding gibi şeylere başvurmak zorundadır.
mikera,

1

Dilsel gücü neyin oluşturduğu konusunda çok fazla anlaşmazlık var gibi görünüyor. Netlik, okunaklılık, uyarlanabilirlik mi, yoksa sadece düz Turing eksiksizliği mi? Tüm bu faktörlerin ortaya çıktığını düşünüyorum, bu yüzden belki de ona bakmanın en iyi yolu stat puanları açısından. Evet, burada kağıt kalem RPG'den bahsediyorum.

Buradaki fikir, her dilin (kabaca) aynı sayıda "noktaya" sahip olduğu ve çeşitli kategorilerde keyfi olarak dağıtılabildiğidir. Tartışma amaçları için tek faktörün kısalık, okunaklılık ve esneklik olduğunu söyleyin. O zaman bir dil son derece özlü ve esnek olabilir, ancak sonuç olarak okunması çok zor olabilir; ya da çok okunaklı ve esnek, ama çok ayrıntılı.

(Muhakkak ki, bir dilin dağıtması gereken noktaların sayısı tasarımcı ve uygulayıcının yeteneği tarafından tanımlanır, ancak tüm dil tasarımcılarının yaptıklarında eşit derecede iyi olduklarını farz edelim.)

Bir dil tasarımcısı bir kategorideki dilin gücünü arttırmaya karar verdiğinde, bu potansiyel gücün bir kısmını mantıklı bir şekilde diğer tüm kategorilerden uzaklaştırır. Bu nedenle, programlama dil tasarımının tamamen değişimlerle ilgili olduğu sık sık söylenir. Bu açıdan, bir dilin genel gücü hala kesin değildir ve dilleri göreceli güçlerine göre kategorize etmek için denenmiş ve gerçek bir metoda geri dönmemiz gerekir. Tatmin edici değil mi? Çok kötü.

İki yoldan bahsedebilirsiniz: Güçlü bir dilin göreceli olarak eşit bir puan dağılımına sahip bir dil olduğu (tüm esnafların girişi, hiçbirinin ustası olmayan) veya bir alanda diğerlerini katılımsız bırakmadan (uzman) mümkün olduğu kadar çok nokta olduğu söylenebilir. Çok sayıda alanda mükemmel ustalık ile "rönesans adamı" dili gibi bir şey yoktur. Ve eğer mümkün olan en güçlü dili tanımlıyorsanız, o zaman şanssızsınız demektir.

Daha fazla okumak için, bu makalenin (rastlantısal olarak da karışık fikirleri varmış gibi görünen Paul Graham tarafından da belirtildiği gibi) , programlama dillerinin gerçekten de iktidarda nasıl değiştiğine karar vermek zor olsa da zor olduğu fikrine değiniyor . Bir dilin tercih ettiğiniz dilden daha az güçlü olduğunu görmenin çok kolay olduğuna ikna edici bir şekilde ikna edici bir şekilde - X'ın eksik olan özelliğini - ama gerçekten de daha güçlü bir dilin gerçekte nasıl olduğunu görmek çok zor - temelde X diline eşdeğerdir, ama bir sürü başka şey atılmış halde. Seni o gazeteden bir alıntı ile bırakıyorum:

İndüksiyonla, çeşitli diller arasındaki iktidardaki tüm farklılıkları görebilecek konumda olan tek programcılar en güçlü olanı anlayanlardır. (Muhtemelen Eric Raymond’ın Lisp’in seni daha iyi bir programcı yapması için kastettiği şey buydu.) Blub paradoksu nedeniyle diğerlerinin görüşlerine güvenemezsin: kullandıkları dilden memnunlar, çünkü kullandıkları dilin programlar hakkında düşünmenin yolu.

Modelinize, tüm dillerin dağılımında mutlaka eşit sayıda puana sahip olmaları konusunda katılmıyorum. Brainf * ck'nin uç örneğini alalım ve toplam puan sayısına rağmen bile, herhangi bir modern dilin karşılaştırılabilir olmadığını kolayca söyleyebiliriz. yani programlama dilinde sıfır toplamlı bir oyun değildir - dil x puanıyla başlamaz ve bunları dağıtmaz, 0 ile başlar ve özelliklere bağlı olarak puan alır. Alınması gereken bazı tavizler elbette doğal ama bütün seçimler eşit değil (bence en azından).
n1ckp

Tüm dillerin mutlaka aynı sayıda puana sahip olduğunu söylemedim. Göz önünde bulundurulan tüm dillerin (yani, gerçek kullanım için tasarlanmış diller) kabaca aynı sayıya sahip olduğunu söyledim . Ezoterik diller patolojik bir durumdur çünkü ilk etapta yararlı olacak şekilde tasarlanmamışlardır . Argüman uğruna basitleştiriyordum, çünkü aslında özellikler sayılabilirse, sırf "özelliklerin sayısı" na dayalı dilleri ayırt etmeye çalışmak kullanışlı değildir.
Jon Purdy

üzgünüm gönderinizi yeniden okudum ve biraz hızlı okuduğuma katılıyorum .. ama yine de her bir ana dilin kabaca aynı noktalara sahip olduğuna hala katılmıyorum. Java ve c ++ 'yı alalım çünkü onlar iyi bildiğim diller. C ++ 'ın Java'dan daha güçlü olduğunu onaylayabildiğimden eminim, çünkü c ++ temelde Java'nın yaptığı her şeyi (gc dışında - ama sonra java da manuel bellek yönetimi sunmuyor) PLUS daha fazla (gerçek şablonlar FTW).
Düşünmek

sadece ana dilleri karşılaştırırken.
n1ckp

0

Programlama dilleri araçlardır - daha fazlası değil, daha az değil. Bazı araçlar son derece uzmandır ve belirli amaçlar için çok uygundur; diğerleri ise genelleştirilir ve neredeyse işe yaramaz olma noktasına gelir.

En "güçlü" dilin asgari zaman, enerji ve diğer araştırmalar yatırımlarıyla hedeflerinize ulaşmanızı sağlayan dil olduğunu; yani, en yüksek yatırım getirisini sağlayan dil. Bazı durumlarda C olabilir; diğerlerinde, Java; hala başkalarında, Haskell.

Yapılacak en iyi şey, çeşitli dilleri ve ne için yararlı olduklarını bilmenizdir. Ardından, yeni bir projeye başlama zamanı geldiğinde, hangisinin en uygun olacağı konusunda bilinçli bir karar verebilirsiniz.


-1

Programlama dilleri hakkında tartışmalar - bazı Linux haber gruplarındaki posta istemcileri hakkında IMHO - benzeri tartışmalar: bunlar alev savaşı olma eğilimindedir. VB6'nın popüler olduğu zamanları hatırlayabilirim. Hatta bir programlama dili olmadığını söyleyenler bile vardı, diğerleri ise çarpıcı uygulamalar yarattı.

Bence programlama dilleri konseptte zaten farklıdır çünkü yaratıcılar dili yarattıklarında / tasarladıklarında akıllarında farklı şeyler vardır. Bu nedenle, bir amaca uyan bir dil - ve bu şartlar altında güçlü - başka birine uymayabilir. Dili güçlü ya da değil olarak adlandırmak tamamen özneldir. Bununla birlikte, uygulanabilecek bir metrik olduğunu sanmıyorum.


Açıklanamayan aşağı oy vermek için +1 oyla, ve çünkü genelde buna katılıyorum. Tasarlandığı görev için bir dil kullanın. C'ye karmaşık GUI yazmayın, VB6'da karmaşık algoritmalar ya da işletim sistemleri yazmayın
Gerry

-1

Hepsi alet sandığındaki aletlerdir. Bir çekiç güçlü olabilir, ancak bir anahtara ihtiyacınız yoksa. C / C ++, bir sistem programcısıysanız harikadır, ancak Adobe Flash muhtemelen oluşturmak istediğiniz oyun sitesi için daha uygun olur.


-1

En güçlü programlama dili, aşağıdaki doğrusal programlama sorununu çözen dilidir :

Üst Düzeye

      Gelişim hızlılığı +
    Kod okuma
    kolaylığı + Hata ayıklama kolaylığı
    + İfade doğruluğu / kısaltması
    + Öğrenme / öğretme kolaylığı
    - CPU kullanımı
    - Bellek gereksinimleri

Tabi

  • Turing Tamamlandı olmalı.
  • Çok paradigmatik olmalı : işlevsel, nesneye yönelik, mantıksal programlama, kısıtlama programlama, eşzamanlılık, dağıtık hesaplama vb.
  • Çok yönlü olmalıKomut satırı arabirimlerinin, bileşen kitaplıklarının, sunucuların, GUI'lerin ve web uygulamalarının oluşturulmasına izin verecek .
  • Taşınabilir olması , yani çapraz platform ortamında taşınması ve bakımı kolay olmalıdır .
  • Bu olmalı uyarlanabilir , yani değişime açık ve teknolojinin ortaya yeni donanım (kuantum cips), yeni paradigmaların ve diğer yenilikler olarak gelişmeye mümkün.
  • Kütüphanelerin gelişimini teşvik etmelidir (CPAN, CTAN ve CRAN gibi).
  • Özgür ve açık kaynak olmalı .

(Ve evet, biliyorum, zaten tamamen çelişkili bir cevap verdim. Çünkü diyalektiyim.)


-2

Bu, doğal diller açısından yazılmıştır, ancak programlama dilleri için de uygun olduğunu düşünüyorum:

Bazı dillerin diğerlerine göre kendinden daha üstün olduğu inancı yaygındır, ancak dilbilimsel gerçeklere dayanmamaktadır. Bazı diller elbette, belirli bir tarih döneminde, diğerlerinden daha yararlı ya da prestijlidir, ancak bu, konuşmacıların o zamanki konuşmacılarının öncelikli olmasından ve herhangi bir dilsel özellikten kaynaklanmamasından kaynaklanmaktadır.
-David Crystal (ed.). Cambridge Dil Ansiklopedisi 2 / e (1997). s.7

"Güç" basitçe bir dilden diğerine atfedilemez. "Çince, Korece'den daha güçlü bir dildir" demek aptalca olurdu. Aynı şekilde, "APL COBOL'den daha güçlü bir dildir" demek aptalca.

Dil gücünü iktidarı objektif bir ölçüyle eşitlemek için birçok girişimde bulunuldu. Bu girişimlerin başarısız olduğuna inanıyorum:

  • Amerikan İngilizcesi konuşuyorsanız, Maori'den bahsetmek yerine ABD'de iş bulmak daha kolay olabilir. Aynı şekilde, LISP veya J yerine Java veya C'yi programlayan bir iş bulmak için kuşkusuz daha kolay, ancak bu ekonomik avantaj kesinlikle dilin doğuştan gelen bir tür gücünü yansıtmıyor. Dilin konuşmacılarının gücü hakkında.
  • "Merhaba", "ni hao" veya "shalom" dan daha iyi değil çünkü daha kısa. Benzer şekilde, bir işlev APL'de COBOL'dan daha kısaca ifade edilebilirken, bu da dilin doğuştan gelen bir tür gücünü yansıtmaz.

Benim düşünceme göre, "bir dilin diğerine olan gücünün" tartışmaları, konuşmacının diğer bazı gruplara karşı üstünlük duygularının örtülü ifadeleridir. Kısacası, önyargı ve basmakalıp. Tabii ki, gerçekten önyargılı insanlar, klişelerinin oldukça güçlü olduğuna inanıyorlar ve onların fikirlerini değiştirmeleri için ikna edebileceğiniz pek olası değil.


Katılmıyorum. Kolay bir örnek için, bence kimsenin, teorik olarak tamamlanmamış olsa bile (bence) brainf * ck'den (di) daha güçlü bir dil bulunduğundan daha fazla söyleyeceğini söyleyemem. Mesele şu ki 'güçlü', hepsinin 'eksiksiz' olduğu gerçeğiyle hiçbir ilgisi olmayan belli bir kalite olduğu. Bunun biraz öznel olabileceği konusunda hemfikir olabilirim, ancak tüm dilin “güçlü olma” ile ilgili eşit olduğunu söylemek oldukça ileri sürülmüş görünüyor.
n1ckp

1
@ n1ck: Güç = Okunabilirlik mi diyorsunuz? Ve :. BF'nin okunabilirlik eksikliği, güç eksikliği anlamına mı geliyor? APL ve J de çok düşük bir okunabilirliğe sahiptir, ancak bunlar son derece yararlı ve özlüdürler (yine de kesinlikle faydalılık veya özlü olmaları iktidarla da eşitlemiyorum). Ters yöne gidiyor, COBOL çok okunabilir; düpedüz fiili; ama yine de, bu onu APL veya BF'den daha güçlü kılmaz. BF oldukça eğlenceli; eğlendirecek güce sahip; ama bu Güç değil Güç. Sorun şu ki, hiç kimsenin arkasında fikir birliği kazanabilecekleri iyi bir Güç teorisi yok gibi görünüyor.
04'de başka bir

1
Hayır, demek istediğim bu güç = okunabilirlik. Sadece tüm dilin eşit olduğu ve dili 'güçlü' konusundaki dili karşılaştıramayacağımıza dair görüşünüze katılmıyorum. Benim düşünceme göre, dile herhangi bir güç vermek için okunabilirliğin bir temeli gerekli, ancak bu gerçekten bir soru değil. Eğer soruyu gerçekten cevaplamak istiyorsak, elbette ilk önce güçlüliği tanımlamamız gerekir ancak benim görüşüme göre bu, cevabınızın beni bu şekilde yorumladığınızı ima ettiği "her durumda en iyisi" ile aynı değildir. kabul ettiğim her şey için dil).
n1ckp
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.