Şimdiye kadar çalıştığınız en kötü programlama dili nedir? [kapalı]

eğer ilginç bir hikaye varsa paylaş, bir cevap gönderin , ama bu soruyu dayak için kötüye kullanmayın dil.


programcılarız ve birincil aracımız kullandığımız programlama dilidir.

en iyisi hakkında çok fazla tartışma varken, hikayelerinizi duymak istiyorum en kötü programlama dilleri hiç ile çalıştı ve seni rahatsız tam olarak ne bilmek istiyorum.

bu hikayeleri kısmen bir dil tasarlarken (özellikle DSL) ortak tuzaklardan kaçınmak ve gelecekte genel olarak ilginç dillerden kaçınmak için toplamak istiyorum.


bu soru subjektif değil . Bir dil yalnızca tek karakter tanımlayıcıları destekliyorsa (bkz. kendi cevabım ) bu kötü olmayan bir şekilde .


düzenleme

bazı insanlar bu sorunun trolleri cezbettiği endişelerini dile getirdi. Tüm cevaplarınızı gözden geçirmek bir şeyi açıklığa kavuşturdu. Cevapların büyük çoğunluğu uygun, kullanışlı ve iyi yazılmıştır.

GÜNCELLEME 2009-07-01 19:15 GMT

dil genel bakış 102 cevaplar 103 farklı diller kapsayan, şimdi tamamlandı. Bir şey düzgün çalışmıyor ve ne olduğundan emin değiliz. mantıklı bir şey. Bu konuda yorumlarınız için David teşekkür ederiz.

burada şimdiye kadar kaplı tüm programlama dilleri vardır (alfabetik sıra, cevap ile bağlantılı, kalın yeni girişler):

' , tüm 20. yüzyıl dilleri , tüm sürükle ve bırak dilleri , tüm özel diller , APF , APL (1) , AS400 , Authorware , Autohotkey , BancaStar , temel , Bourne Kabuğu , Brainfuck , c++ , Centura Takım Geliştiricisi , Cobol (1) , Soğuk Füzyon , Coldfusion , CRM114 , Kristal ' , CSS , Dataflex 2.3 , DB / C DX , dbase II , DCL , Delphi IDE , kapı DXL , DOS toplu (1) , Excel makro dili , FileMaker , FOCUS , , , FORTRAN , FORTRAN 77 , HTML , İllustra web blade , Informix 4. Nesil Dili , Informix Universal Server web blade , INTERCAL , Java , JavaScript (1) , JCL (1) , karol , LabTalk , , , Lingo , LISP , Logo , LOLCODE , LotusScript , m4 , Magic II , Makefiles , MapBasic , MaxScript , Meditech Magic , MEL , mIRC komut dosyası , MS Access , kabakulak , Oberon , nesne uzantıları C , Objective - C , OPS5 , Oz , , (1) , PHP , PL / SQL , PowerDynamo , - 4GL , prova , PS-FOCUS , Python , Düzenli İfadeler , RPG , RPG II , Şeması , ScriptMaker , sendmail.conf , Smalltalk , Smalltalk , SNOBOL , SpeedScript , Sybase PowerBuilder , Symbian C++ , sistem RPL , TCL , TECO , Görsel Yazılım Ortamı , Küçük praat , TransCAD , troff , uBasic , VB6 (1) , VBScript (1) , VDF4 , Vimscript , Visual Basic (1) , Visual C++ , Visual Foxpro , VSE , Webspeed , XSLT

80386 assembler, VB6 ve VBScript kapsayan cevaplar kaldırıldı.

44
tarihinde sordu Ludwig Weinzierl 2009-06-07 18:08:39
kaynak

30 ответов

PHP (belirli bir sırayla)

  • tutarsız işlev adları ve bağımsız değişken siparişleri
    • çünkü her biri farklı bir adlandırma kuralı ve argüman sırası kullanan bir zillion işlevi vardır. "Bakalım... bu foo_bar veya foobar veya fooBar mı... ve iğne, saman veya saman, iğne mi ?"PHP dize işlevleri mükemmel bunun örneği. Bunların yarısı str_foo ve diğer yarısı strfoo kullanıyor .
  • standart olmayan tarih biçimi karakterleri
    • almak j örneğin
      • in UNİX (bu arada, herkes tarih dize biçimleri için bir rehber olarak kullanır) %j ile yılın gününü döndürür lider sıfırlar.
      • PHP tarih işlev j önde gelen sıfır olmadan Ayın gününü döndürür.
  • Apache 2.0 MPM için hala destek yok
    • tavsiye edilmez.
    • neden bu desteklenmiyor? "Altta yatan çerçeveyi daha karmaşık hale getirdiğinizde tamamen ayrı yürütme iş parçacıkları, tamamen ayrı bellek segmentleri ve oynamak için her istek için güçlü bir kum havuzu olması, kil ayakları PHP'nin sistemine sokulur." Bağlantı Yani... desteklenmiyor çünkü işleri zorlaştırıyor mu? Kolay çünkü sadece doğru şeyler yapmaya değer mi? (Adil olmak gerekirse, Emil H işaret ettiği gibi, bu genellikle kötü 3.taraf lib'lere iş parçacığı açısından güvenli değil, PHP'nin çekirdeği ise.)
  • yerel Unicode desteği yok
    • yerli Unicode desteği php6
    • geçmiş için diğer dillerde insanlarla konuşmak gerekebilir küresel bir ortamda yaşamış değil eminim, oh 18 yıl . oh bekle. (adil olmak gerekirse, her şey bu gün Unicode kullanmıyor ve yaş beni gerçekten rahatsız ediyor. Demek istediğim, bunu yapmak için fazladan bir iş yapmam gerekmiyor. Bu sadece bir PHP sorunu değil.)

ben dil ile diğer kabartmalar var. Bunlar sadece biraz. Jeff Atwood, PHP'nin neden berbat olduğu hakkında old post var. O da fark etmez diyor. Kabul etmiyorum ama işte geldik.

212
cevap baudtack 2017-05-23 15:34:39
kaynak

XSLT.

  • XSLT şaşırtıcı, başlamak için. Metafor, bildiğim her şeyden tamamen farklıdır.
  • şey, köşe parantezlerinde çok derin bir komite tarafından tasarlandı ve tuhaf bir frankenstein olarak ortaya çıktı.
  • çıkış biçimini belirtmek için gereken garip bildirimler.
  • yerleşik, görünmez kurallar.
  • garip cıvata-on şeyler, gibi komutlar.
  • XPath bağımlılığı.
  • araçlar desteği son zamanlara kadar oldukça ince. İlk günlerde XSLT hata ayıklama tam karanlıkta gezinirken bir egzersiz oldu. Araçlar bunu değiştirir, ancak yine de XSLT listemin başında.

XSLT, çoğu insanın bunu görmezden geldiği kadar garip. Bunu kullanmanız gerekiyorsa, şeyler gitmek yapmak için sihirli incantations vermek için bir XSLT Şaman gerekir.

101
cevap Cheeso 2009-06-09 16:17:30
kaynak

DOS toplu dosyaları. Bunun programlama dili olarak nitelendirilip nitelendirilmediğinden emin değilim. Sorunlarınızı çözemeyeceğiniz değil, bash için kullanılıyorsa...

sadece benim iki sent.

96
cevap bbuser 2012-01-04 01:40:39
kaynak

gerçek bir dil olup olmadığından emin değilim, ama Makefiles'ten nefret ediyorum.

Makefiles, boşluk ve sekme arasında anlamlı farklılıklara sahiptir, bu nedenle iki satır aynı görünse bile, aynı şeyi çalıştırmazlar.

Make, öğrenmesi zor olan birçok dil için karmaşık bir örtük kural kümesine dayanır, ancak daha sonra make dosyası tarafından sık sık geçersiz kılınır.

bir Makefile sistemi genellikle birçok, birçok dosya üzerinde yayılır birçok dizin. Neredeyse hiç scoping veya soyutlama yapılmadığında, bir make dosyasına birkaç dizin değişikliği kaynağımın oluşturulmasını önleyebilir. Ancak hata mesajı her zaman bir compliation hatası, make veya makefiles hakkında anlamlı bir hata değildir.

makefiles başarıyla kullanan herhangi bir ortamda çalıştığım tam zamanlı bir uzmana sahiptir. Ve bütün bunlar birkaç dakika tıraş etmek için mi??

92
cevap abelenky 2011-11-25 21:50:29
kaynak

şimdiye kadar gördüğüm en kötü dil, iyi bir ses analizi aracı olan praat aracından geliyor. Komut dosyası dilini kullanana kadar oldukça iyi bir iş çıkarır. sigh kötü anılar.

tiny praat script tutorial for beginners

  • işlev çağrısı

    En az 3 farklı işlev arama sözdizimini listeledik :
    • normal bir

      string = selected("Strings")

      burada özel bir şey yok, seçilen işlevin sonucunu değişken dizeye atarsınız. Pek korkutucu değil... henüz.

    • "bazı GUI komutlarını parametrelerle çağırıyorum "

      Create Strings as file list... liste 'path$'/'type$'

      gördüğünüz gibi, fonksiyon adı "Create" de başlar ve "ile bitirir...". Komut "Dosya listesi olarak dizeleri oluşturma", praat'ta bir düğme veya bir menüde (kontrol etmek için korkuyorum) görüntülenen metindir. Bu komut 2 parametre liste ve bir ifade alır. 151930920 '

      ifadesinde daha derine bakacağım

      hmm. Evet. Boşluk yok. Boşluk tanıtıldı olsaydı, ayrı argümanlar olurdu. Tahmin edebileceğiniz gibi, parantez işe yaramıyor. Tanımın bu noktasında değişken adların son ekine işaret etmek istiyorum. Bunu geliştirmeyeceğim. bu paragraf, sadece alay ediyorum.

    • "Oh, ancak DEĞİŞKENİMDEKİ GUI komutunun sonucunu almak istiyorum "

      noliftt = Get number of strings

      Evet burada bir desen, uzun ve garip fonksiyon adı görebilirsiniz, bu bir GUI arama olmalıdır. Ama yok...'yani hiçbir parametre. Ayrıştırıcının neye benzediğini görmek istemiyorum.
  • inanılmaz tip sistem

    (aka Haskell ve OCaml, praat size geliyor)
    • basit tip

      windowname$ = left$(line$,length(line$)-4)

      yani, orada neler oluyor? Şimdi Kongre ve ifade türlerine bakmanın zamanı geldi, bu yüzden burada var :

      • left$ :: (String, İnt) -> String
      • uzunluğu :: (String) - > İnt
      • windowname$:: String
      • satır$:: dize
      Gördüğünüz gibi, değişken adı ve işlev adları kendi türü veya dönüş türü ile eklenir. Sonek bir ' $ ' ise, o zaman bir dize döndürür veya bir dizedir. Bir şey düzgün çalışmıyor ve ne olduğundan emin değiliz. Türünü uygulamayı kolaylaştırmak için bir değişkene önekleme noktasını görebiliyorum, ancak sonek için üzgünüm, yapamam
    • dizi türü

      Dizi türünü göstermek için, 'küçük' bir döngü tanıtmama izin verin :
      
          for i from 1 to 4
              Select... time time
              bandwidth'i'$ = Get bandwidth... i
              forhertz'i'$ = Get formant... i
          endfor
          

      Bir şey düzgün çalışmıyor ve ne olduğundan emin değiliz... (hayır bir işlev değil)

      bandwidth'i'$

      Ne yapar dize değişkenleri oluşturmak olduğunu: bandwidth1$ , bandwidth2$ , bandwidth3$ , bandwidth4$ ve onlara değer ver. Beklediğiniz gibi, iki oluşturamazsınız boyutlu dizi bu şekilde, böyle bir şey yapmanız gerekir : band2D__'i'__'j'$

      http://img214.imageshack.us/img214/3008/scaredkittylolqa2.jpg
    • özel dize çağırma

      outline$ = "'time'@F'i':'forhertznum'Hz,'bandnum'Hz, 'spec''newline$'" outline$ >> 'outfile$'

      Dizeleri garip (en azından) dilde ele alınır. "genel içindeki bir değişkenin değerini çağırmak için kullanılır "" dize. Bu ve . Powershell tarafından geçen PHP bash birçok dilde yerleşik tüm Kongre karşı gider. Ve bak, yeniden yönlendirme bile var. Aldanmayın, sevgili kabuğunuzda olduğu gibi çalışmaz. Hayır, değişken değeri "ile almanız gerekir

    • da Wonderderderfulful yürütme modeli

      son dokunuşu buna koyacağım yürütme modeli hakkında sizinle konuşarak wonderderderderfulful sunum. Her usul dillerinde olduğu gibi yukarıdan aşağıya doğru çalıştırıldınız, değişkenler ve praat GUI var. Yani praat guı üzerinde her şeyi kod, menü/düğmeleri yazılı komutları çağırmak olduğunu.

      praat ana pencere olabilir öğelerin bir listesini içerir :

      • '
      • listesi dosyalar (wonderderfulful uzun uzun adıyla bir işlev tarafından oluşturulan)
      • Spectrogramm
      • dizeleri (sormayın)
      Dolayısıyla, belirli bir dosyada işlem yapmak istiyorsanız, listedeki dosyayı programlı olarak seçmeniz ve ardından bazı eylemleri gerçekleştirmek için farklı düğmelere basmanız gerekir. Parametreleri bir GUI eylemine geçirmek isterseniz, formunuzun GUI düzenini izlemeniz gerekir argümanlar, örneğin " To Spectrogram... 0.005 5000 0.002 20 Gaussian " böyle çünkü bu düzeni takip ediyor:

      http://img7.imageshack.us/img7/5534/tospectrogramm.png

    söylemeye gerek yok, kabuslarım etrafımda dans eden ve "hata ayıklama MEEEE!!".

    praat sitesinde daha fazla bilgi, iyi adlandırılmış bölüm "kolay" altında programlanabilir komut dosyası dili "

  • 79
    cevap Raoul Supercopter 2009-06-07 23:44:05
    kaynak

    bu soru ölmeyi reddettiğinden ve OP beni cevaplamaya teşvik ettiğinden beri...

    düşünceniz için alçakgönüllülükle proffer Authorware (AW) oluşturmak mümkün olan en kötü dil olarak. (n.b. Burada hatırlamaya gidiyorum, AW kullandığımdan beri ~6 yıl oldu, ki bu da elbette hatırlayamadığım bir dizi korkunç şey var demektir)

    korku, korku http://img.brothersoft.com/screenshots/softimage/a/adobe_authorware-67096-1.jpeg

    bir Macromedia ürün (-10 puan), bir tescilli dil (-50 daha fazla) öncelikle olmayan programcılar ve programcılar hem ikonik bir dil ve bir metin olarak uygulanan tarafından oluşturulabilir e-öğrenme yazılımı ve ayrıca yazılım oluşturmak için tasarlanmıştır gerçeği ile başlayalım

    dil (-100).

    Şimdi bu son ifade sizi korkutmazsa, daha önce WYSIWYG oluşturulan kodu düzeltmek zorunda kalmazsınız (Merhaba Dreamweaver ve Frontpage devs!), ancak göze çarpan nokta, AW'NİN bir akışa sürüklenebilecek yaklaşık 12 veya daha fazla element içeren bir kütüphanesi olmasıdır. "Sayfa" öğeleri, animasyonlar, İFELSE ve GOTO (-100) gibi. Tabii ki nesneleri akıştan kaldırmak, IDE'NİN sahip olduğu herhangi bir sayıda kırık bağlantı ve eser yarattı başarı ile başa çıkma değişken seviyeleri. Doğal olarak sihirbazlar (-10) inşa bunların önemli bir kaynak vardı.

    Neyse ki her zaman bir kod görünümüne adım atabilirsiniz ve sonunda ikonik unsurların sınırlı bir setiyle bazı şeylerin aksi halde mümkün olmadığı için yapmanız gerekir. Dil kendisi öğretmen dayalı (-50) - sadece ulaşmak için hırs ve kapsamı olsaydı kötü dil kendisi için bir aday derinlikler AW, Vikipedi'nin söylediği şey için çaba gösterecektir:

    ...öğretmen dili kolay değildi öğrenmek. Aslında, hatta önerildi bu birkaç yıllık deneyim dil daha önce gerekli olacaktır programcılar programlar oluşturabilir. tutma.

    mükemmel bir temel sonra, hangi tam olarak hiçbir şey ile internet yükselişi önce yıllarda üzerine inşa edilmiştir. Kesinlikle hayır bir dizi ötesinde veri yapısının formu (-100), kesinlikle hayır şeker (gerçek erkekler anahtar ifadeleri kullanmayın?(-10) ve sözdizimsel ' büyük bir sıçrama ("- "sizin için hiçbir azaltma operatörü böylece yorum göstergesi oldu!) (-10). Dil referans belgeleri kağıt veya zıp dosyası biçimlerinde (-100) sağlanmıştır, ama en azından geliştirici run usegroup desteği vardı ve hızlı bir şekilde kurmak sorununuza çözüm, gerçek bir dilde gerçek kodlamayı yapmanızı sağlamak için AW'NİN DLL veya SWF içe aktarma özelliklerini kullanmaktır.

    AW, bir akışla (gerekli duraklama komutlarıyla) tahrik edildi ve bu nedenle, sisteminin (-50) olay temelli sisteminden (-50) ziyade sisteminin tüm ilgili sorunlarına sahiptir ve dokümantasyonun açık pazarlama yalanlarına rağmen nesne yönelimli değil (-50) ' idi. hepsi kod yeniden GOTO aracılığıyla elde edildi. kapsam yok, çok sayıda küresel (-50).

    doğrudan dilin hatası değil, açıkçası kaynak kontrol entegrasyonu mümkün değildi ve kesinlikle TDD, Dokümantasyon üretimi veya istediğiniz başka bir eklenti aracı yok.

    tabii Macromedia sonunda üreten, yıllardır meşgul inatçı bir ret ile internet kafasının meydan bir araya geldi buggy, kullanımı zor, Shockwave olan güvenlik kabusu (-100) aslında bir gerekli eklenti (-10) aracılığıyla yazılımın masaüstü sürümlerini seri hale getirmek için. HTML rose gibi AW durgunlaştı, hala IEEE SCORM javascript standartları karşısında bile şok dalgası teslimatı ile devam ediyor.

    sonuçta yalvarıyor ve vaat yıllar sonra Macromedia AW radikal yeni bir sürümünü açıkladı Geliştirme bu sorunları çözmek için, ve birkaç yıl sonra geliştirme dalı ve daha sonra projeyi iptal etti. Elbette Macromedia hala (EVİL BONUS -500) satıyor.

    başka bir şey söylenmesi gerekiyorsa, bu, (-10000) değişken adlarındaki boşluklara izin veren dildir.

    gerçek acıyı yaşamak istiyorsanız, başkasının belgesiz Macar notasyonunu okumayı deneyin büyük / küçük harf duyarlı olmayan ve değişken ad boşluklarına izin veren bir dilde.


    toplam Annakata keyfi skor (Aas): -11300

    Kişisel deneyim için ayarlanmış: OutOfRangeException

    (uzunluk için özür dilerim, ancak katartikti)

    74
    cevap annakata 2009-06-30 18:56:24
    kaynak

    Cidden: Perl. Yeni başlayanlar için ve hatta günlük olarak perl ile çalışan yarı profesyoneller için kodlamak kıçından sadece bir acı. Meslektaşlarımın dille mücadele ettiğini, iyi kabul görmüş kodlama standardı ile ilgili olmayan 2000 hatları gibi en kötü senaryoları inşa ettiğini sürekli olarak görebiliyorum. Programlamada gördüğüm en kötü karışıklık. Şimdi, her zaman söyleyebilirsin, bu insanlar kodlamada kötüdür (bazılarının kullandığı gerçeğine rağmen). yıllar, şimdi), ama dil, başka bir adam tarafından bir senaryo okumak zorunda kaldığımda çığlık atmamı sağlayan tüm bu saçmalıkları teşvik ediyor.

    68
    cevap buster 2012-01-04 01:46:32
    kaynak

    MS Access Visual Basic for Applications (VBA) da oldukça kötüydü. Erişim tamamen kötüydü, çünkü sizi zayıf bir paradigma zorladı ve başlamak için aldatıcı bir şekilde basitti, ancak bitirmek için bir kabus.

    43
    cevap John MacIntyre 2009-06-09 06:11:04
    kaynak

    Cobol hakkında henüz cevap yok mu? :O

    40
    cevap Joril 2009-06-07 19:46:02
    kaynak

    hat numaraları ile Eski skool temelleri benim seçimim olurdu. Yeni çizgiler eklemek için Satır Numaraları arasında boşluk olmadığında, bir renumber yardımcı programını çalıştırmak zorunda kaldınız, bu da nerede olduğunuza bağlı herhangi bir zihinsel çapayı kaybetmenize neden oldu.

    sonuç olarak, tek bir satırda (kolonlarla ayrılmış) çok fazla ifadede sıkıştınız ya da tıkamadığınız işi yapmak için başka bir yerde bir goto veya gosub yaptınız.

    40
    cevap Nosredna 2009-06-07 23:17:42
    kaynak

    kabakulak

    birkaç yıldır içinde çalıştım, ama o zamandan beri tam bir beyin dökümü yaptım. Gerçekten hatırlayabildiğim tek şey hiçbir belge (benim yerimde) ve şifreli komutlar değildi.

    korkunçtu. Korkunç! Korkunç!!!

    38
    cevap dna123 2009-06-08 20:54:25
    kaynak

    sadece iki çeşit dil var: herkesin şikayet ettiği ve kimsenin kullanmadığı diller.

    Bjarne Stroustrup

    37
    cevap Dinah 2009-06-28 22:30:50
    kaynak

    henüz pek çok dilde çalışmadım ve çoğunlukla betik dilleri ile uğraşmadım; bu VBScript en az sevdiğim kişidir. Bazı kullanışlı özelliklere sahip olmasına rağmen, bazı şeyler gerçekten beni kızdırıyor:

    • nesne atamaları Set anahtar kelime kullanılarak yapılır:

      Set foo = Nothing
      

      atlama Set , çalışma zamanı hatalarının en yaygın nedenlerinden biridir.

    • yapılandırılmış istisna işleme gibi bir şey yok. Hata denetimi şu şekildedir:

      On Error Resume Next
      
      ' Do something
      
      If Err.Number <> 0
        ' Handle error
        Err.Clear
      End If
      
      ' And so on
      
    • parantez içinde yordam çağrı parametrelerini kapsayan Call anahtar kelime kullanarak gerektirir:

      Call Foo (a, b)
      
    • İngilizce benzeri sözdizimi çok ayrıntılı. (Ben kıvırcık parantez hayranıyım.)

    • . operatörler uzun devre. Sonraki durumun bir öncekinin başarısına dayandığı bir bileşik koşulu test etmeniz gerekiyorsa, koşulları ayrı If ifadelerine koymanız gerekir.

    • parametreli sınıf oluşturucu eksikliği.

    • bir ifadeyi birkaç satıra sarmak için bir alt çizgi kullanmanız gerekir:

      str = "Hello, " & _
            "world!"
      
    • çok satırlı yorum eksikliği.


    düzenleme: bu makaleyi buldu: VBScript nefret Flanşlı Kılavuzu . Yazar şikayetlerini "VBS Python değil" olarak özetliyor:)

    34
    cevap Helen 2009-07-10 18:05:13
    kaynak

    Objective-C.

    ek açıklamalar kafa karıştırıcı, yöntemleri çağırmak için parantez kullanarak beynimde hala hesaplanmaz ve daha da kötüsü, C'deki tüm kütüphane işlevlerinin C, - > ve içindeki standart operatörler kullanılarak çağrılmasıdır . ve bu dili kullanan tek şirket Apple gibi görünüyor.

    itiraf ediyorum sadece iPhone için programlama yaparken dili kullandım (ve OS X için programlamaya bakıyorum), ancak C++ sadece çatallı olsaydı, ek açıklamalara ekleme ve uygulamayı zorlayarak ve başlık dosyalarının ayrı olması çok daha mantıklı olur.

    29
    cevap John Bellone 2009-06-07 20:04:33
    kaynak

    ilerleme 4GL (görünüşe göre şimdi " Openedge Advanced Business Language " olarak bilinir).

    ilerleme hem bir dil hem de bir veritabanı sistemidir. Bütün dil, berbat yeşil ekran veri girişi ekranlarını yazmayı kolaylaştırmak için tasarlanmıştır. (Bu yüzden bunun Windows'a ne kadar iyi çevirdiğini hayal ederek başlayın.) Güzel ekranlar, program mantığı veya toplu işleme olsun, bundan daha fancier bir şey... pek değil.

    son kullanılan sürüm 7, 90'lı yılların sonlarında, bu yüzden bazılarının güncel olmadığı belli belirsiz bir şekilde mümkündür, ancak buna bahse girmezdim.

    • başlangıçta metin modu Veri girişi ekranları için tasarlanmıştır, böylece Windows, tüm ekran koordinatları geniş piksel bazı garip sayıda ve yüksek piksel farklı sayıda "karakter" birimleri vardır. Ama tabii ki bir oransal yazı varsayılan, bu yüzden "karakter birimleri" sayısı değil belirli bir alana sığacak karakterleri gerçek sayısına karşılık gelir.
    • sınıf veya nesne yok.
    • diziler veya dinamik bellek tahsisi için dil desteği yok. Bir diziye benzeyen bir şey istiyorsanız, geçici bir bellek içi veritabanı tablosu oluşturun, şemasını tanımlayın ve üzerine bir imleç alın. (Daha sonraki bir sürümden biraz kod gördüm, burada aslında ilkel bir nesne yönelimli inşa ettiler ve sevk ettiler bu bellek içi tabloların üstünde sistem. Korkutucu.)
    • ISAM veritabanı erişimi inşa edilmiştir. (Ancak SQL değil. Kimin ihtiyacı var?) Counter tablosundaki geçerli kayıttaki Counter alanını artırmak istiyorsanız, sadece State.Counter = State.Counter + 1 deyin . O kadar da kötü değil...
    • bir tabloyu doğrudan kodda kullandığınızda, sahnelerin arkasında, geçerli imleç konumunu tutmak için görünmez, sihirli bir yerel değişkene benzeyen bir şey yaratırlar şu masa. Onlar tahmin hangi içeren blok bu imleç için scoped olacak. Dikkatli değilseniz, bir bloktan çıktığınızda imleciniz kaybolur ve kendisini daha sonra sıfırlanır, hiçbir uyarı yoktur. Ya da bir tablo ile çalışmaya başlayacaksınız ve ilk kayıtta başlamadığınızı göreceksiniz, çünkü imleci başka bir bloktan (hatta kendi başınıza) yeniden kullanıyorsunuz, çünkü beklemediğiniz zaman kapsamınız genişletildi).
    • işlemleri üzerinde faaliyet bu vahşi tahmin kapsamları. Eğleniyor muyuz?
    • her şey kısaltılabilir. Saldırgan uzun anahtar kelimelerden bazıları için, bu ilk başta çok kötü görünmeyebilir. Ancak Index adlı bir değişkene sahipseniz, Index veya Ind veya I olarak başvurabilirsiniz . (Yazım hataları çok ilginç sonuçlar olabilir.) Ve bir veritabanı alanına erişmek istiyorsanız, yalnızca alan adını kısaltmakla kalmaz, aynı zamanda bu alan adı ile nitelemek zorunda kalmazsınız. tablo adı; onlar da tablo tahmin edeceğiz.
    • gerçekten korkutucu sonuçlar için, bu ile birleştirmek:
    • aksi belirtilmediği sürece, veya bir veritabanı erişimi olduğunu varsayıyorlar. Henüz bildirilmediğiniz bir değişkene erişirseniz (veya daha büyük olasılıkla, değişken adını yanlış yazdıysanız), derleyici hatası yoktur: bunun yerine, bu ada sahip bir veritabanı alanı aramaya gider... ya da bu ismi kısaltan bir alan.

    tahmin en kötüsüdür. Kısaltmalar ve varsayılan alan arasında, dikkatli olmadıysanız bazı kötü şeyler alabilirsiniz. (Bir döngü değişkeni olarak kullanmadan önce I değerini yerel bir değişken olarak bildirmeyi unuttunuz mu? Sorun değil, sadece rastgele bir tablo seçeceğiz, mevcut kaydını tutacağız ve Adı I ile başlayan keyfi olarak seçilmiş bir alanı tamamen çöpe atacağız !)

    daha sonra yanlışlıkla bir alanın varsayılan olarak eklenmesi erişim, tablolarınız için tahmin ettiği kapsamı değiştirebilir, böylece tamamen ilgisiz bir kod parçasını kırabilir. Eğlenceli, değil mi?

    onlar da dile yerleşik bir raporlama sistemi var, ama görünüşe göre bunun tüm anıları bastırdı.

    Netscape LiveWire (sunucu tarafı Javascript'te kötü niyetli bir girişim) ve klasik ASP (VBScript) ile çalışan başka bir iş bulduğumda cennetteydim.

    28
    cevap Joe White 2009-06-07 21:27:04
    kaynak

    en kötü dil? BancStar, eller Yukarı.

    3.000 önceden tanımlanmış değişkenler, tüm numaralı, tüm küresel. Değişken bildirimi yok, başlatma yok. Bunların yarısı, menzile dağılmış, sistem kullanımı için ayrılmış, ancak bunları tehlikenizde kullanabilirsiniz. Yüz ya da öylesine otomatik olarak çeşitli işlemler sonucunda doldurulur ve hangilerinin listesi yoktur. Hepsi 38k baytlara sığar ve Tampon taşması için herhangi bir koruma yoktur. Sistem bir giriş alanının uzunluğunu yanlış bildirdiyseniz, kullanıcıların 20 baytını on bayt alanına koymalarına neşeyle izin verir. Etkileri en az söylemek, öngörülemeyen.

    bu, hesaplanan bir gosub veya goto bildirmenize izin verecek bir dildir; sınırlamaları nedeniyle, bu sıklıkla gereklidir. Koşullar ileri veya geri bildirilebilir. Başlamadan önce 20 satır sonlandırır bir "If" deyimi resim.

    dönüş yığını çok sığ, (20 Gosubs ya da öylesine) ve herhangi bir fonksiyon tuşu Bir kullanıcının basın farklı bir alt yordamdan başladı beri, kolayca yığını taşması olabilir. Tasarımcılar düşünceli olarak, bu sorunu çözmek ve programın daha sonra ne yapacağını tam olarak bilmeyeceğinizden emin olmak için yığını tamamen nükleer hale getirmek için bir "Clear Gosubs" komutu içeriyordu.

    çok daha fazlası var. Bu aşkın onbinlerce satırıkraftlı korku.

    28
    cevap R Ubben 2009-06-08 07:11:13
    kaynak

    .bat dosyaları komut dosyası dili DOS/Windows üzerinde. Tanrı sadece bu ne kadar güçlü olduğunu bilir, özellikle Unix kabuk dilleriyle karşılaştırırsanız (bu da çok güçlü değildir, ancak yine de daha iyi olur).

    sadece iki dizeyi birleştirmeye veya bir for döngüsü yapmaya çalışın. nah.

    23
    cevap Gabriele D'Antona 2009-06-07 23:24:34
    kaynak

    VSE, görsel yazılım ortamı.

    Bu benim bir prof ( Dr. Henry Ledgard ) undergrad/grad okulda geri bizi satmaya çalıştı bir dildir. (Adını vermekten kendimi kötü hissetmiyorum, çünkü söyleyebileceğim kadarıyla, hala büyük bir savunucusu ve bazı insanları dilimlenmiş ekmeğin en iyi şey olduğuna ikna etme şansını memnuniyetle karşılıyor). Bunu insanlara tarif ederken, en iyi benzetim, FORTRAN ve COBOL'UN aşağılık bir çocuğu, fazladan bir kötü atıldı. dan sadece gerçekten erişilebilir klasör bu materyalle buldum( özellikle burada bağlantı kuramayacağım çok daha fazlası var):

    VSE, "ayırma ilkesi" olarak adlandırdıkları şeyin etrafında inşa edilmiştir. Fikir, veri ve davranışın tamamen ayrılmış olması gerektiğidir. C'nin tüm değişkenlerin/verilerin işlevin başında bildirilmesi gerektiğini düşünün. şimdi bu bildirimi diğer işlevlerin de kullanabileceği ayrı bir dosyaya taşıyın. Diğer işlevler kullandığınızda, aynı düzeni olan verilerin yerel bir kopyası değil, aynı verileri kullanıyorlar.

    neden böyle şeyler yapıyorsun? yazılımından değişken Kapsam kurallarının zor olduğunu öğrendik. bir alıntı içerdim ama, çoğu aptal gibi, bu adamları bir şey söylemek sonsuza kadar sürer. "Kapsam Quagmire" için bu PDF arama ve bazı gerçek aydınlanma keşfedeceksiniz.

    bunun bir şekilde çoklu proc ortamları için daha uygun hale getirdiğini iddia etmeye devam ediyorlar çünkü altta yatan donanım uygulamasını daha yakından modelliyor. Riiiight.

    sık sık ortaya çıkan başka bir seçim teması:

    INCREMENT DAY COUNT BY 7 (or DAY COUNT = DAY COUNT + 7)
    DECREMENT TOTAL LOSS BY GROUND_LOSS
    ADD 100.3 TO TOTAL LOSS(LINK_POINTER)
    SET AIRCRAFT STATE TO ON_THE_GROUND
    PERCENT BUSY = (TOTAL BUSY CALLS * 100)/TOTAL CALLS
    

    earthshaking olmasa da, stil aritmetik sıradan yansıtır kullanma, yani, herkes okuyabilir ve anlayabilir bu-bir programlama bilmeden dil. Aslında, VisiSoft. FORTRAN ile hemen hemen aynıdır, gömülü karmaşık aritmetik dahil. bu programcılar ile ilgili koyar mesleki durumu ve karşılık gelen iş güvenliği kolaylık.

    Ummm, o kadar da endişeli değil, gerçekten. Bill Cave satmak için denemek için kullandığı önemli satış noktalarından biri VSE, programlamanın demokratikleşmesidir, böylece iş adamları, iş güvenliği amacıyla çılgın, gizemli araçlar kullanan programcılara kendilerini ayırmaya ihtiyaç duymazlar. Aracını satmak için bu mantıksız korkuyu kullanıyor. (Ve işe yarıyor-federal hükümet onun en büyük müşterisidir). Belgede "iş güvenliği" ifadesinin 17 kullanımını saydım. Örnekler:

    • ... ve sadece işi isteyenler için uygun güvenlik .
    • daha yanlış iş güvenliği ?
    • , iş güvenliği , diğer adamın ne yapıldığını anlayamamasını sağlamaya bağlı mı?
    • iş güvenliği karmaşık kod bağımlı...?
    • yeni teknolojinin kabulünü etkileyen en güçlü güçlerden biri, algısıdır iş güvenliği .

    o çanta dizeleri tutan yöneticiler ve vse çim için tanımak için bilgiye sahip teknik insanlar arasında kama sürücü bu paranoya kullanır. Bunu şirketlere böyle sıkıyor - " teknik insanlarınız sadece berbat olduğunu söylüyor çünkü onları eskimiş hale getireceğinden korkuyorlar!"


    birkaç ek seçim tırnak genel bakış dokümantasyonu:

    bu yaklaşımın bir başka sonucu verileri belleğe eşlenir mi sizi hızlı bir şekilde bulamadık!" temel ve boyunca muhafaza. Bu, kullanıcıların tam bir hareket etmesini sağlar karakter dizisi olarak yapı her descrives bir şablon içine bireysel alan. Birden çok şablon belirli bir depolama için yeniden tanımlanabilir alan. C ve diğer dillerden farklı olarak, altyapı nedeniyle yanlış hizalanma sorunları olmadan hareket ettirilebilir kelime sınır hizalama standartları.

    şimdi, seni bilmiyorum, ama bellek düzenine bir WYSIWYG yaklaşımının, dil seçimi söz konusu olduğunda öncelik listemin üst de olduğunu biliyorum! Temel olarak, hizalama sorunlarını görmezden gelirler, çünkü sadece '60'larda ve '70'lerde tasarlanan eski diller kelime hizalamasını önemser. Veya böyle bir şey. Akıl yürütme sahte. Neredeyse hemen unutmaya başladığım için çok az mantıklı geldi.

    VSE hiçbir kullanıcı tanımlı türleri vardır. bu geniş kapsamlı büyük ölçüde basitleştiren karar dil. Pratik bir kazanç bakış açısı da harika. VSE tasarımcı ve programcı sağlar aynı boyunca bir program düzenleyin fiziksel bir sistem olarak çizgiler modelliyordu. Vse yapıların olmasını sağlar okunması kolay, mantıklı bir şekilde inşa edilmiştir öznitelik hiyerarşisi.

    harika! Kullanıcı tanımlı türler topal.

    :

    olabilirken neden bir InputMessage nesnesi gibi bir şey isteyeyim
    LINKS_IN_USE INTEGER
    INPUT_MESSAGE
       1 ORIGIN             INTEGER
       1 DESTINATION        INTEGER
       1 MESSAGE
          2 MESSAGE_HEADER  CHAR 10
          2 MESSAGE_BODY    CHAR 24
          2 MESSAGE_TRAILER CHAR 10
       1 ARRIVAL_TIME       INTEGER
       1 DURATION           INTEGER
       1 TYPE               CHAR 5
    
    OUTPUT_MESSAGE CHARACTER 50
    

    buna bakabilir ve " OH, bu oldukça güzel biçimlendirilmiş, eğer biraz eski okul."Eski okul haklı. Boşluk önemlidir-- çok önemli. Ve gereksiz! 1 sütun 3 olmalıdır. 1 , hiyerarşinin ilk seviyesinde olduğunu gösterir. Sembol adı sütun 5 olmalıdır. Sen hiyerarşileri 9 derinliği ile sınırlıdır.

    iyi, tamam, ama bu kadar korkunç mu? Sadece bekle:

    okumak için iyi bilinmektedir metin, geleneksel üst/alt kullanımı vaka daha okunabilir. VSE hepsini kullanıyor büyük durum (yorumlar hariç). neden? Psikolojide edebiyat dayanmaktadır nesir üzerinde. Programlar, basitçe, değil nesir. Programlar daha matematik gibidir, muhasebe, tablolar. Program yazı tipleri (genellikle Kurye) neredeyse evrensel sabit-pitch, ve iyi için sebep-arasında dikey hizalama ilgili kod satırları. programları üst durumda güzel okunabilir ve, bir süre sonra, bizim çok daha iyi görüş

    senin gibi bir şey dil düzeyinde görüş! Bu doğru, bir yorumda olmadıkça VSE & # 39; de daha düşük bir durum kullanamazsınız. Sadece CAPSLOCK'UNUZU açık tutun, bir süre orada sıkışacak.

    VSE alt işlemlere süreçler denir. Bu kod örneği üç işlem içerir:

    PROCESS_MUSIC
        EXECUTE INITIALIZE_THE_SCENE
        EXECUTE PROCESS_PANEL_WIDGET
    
    INITIALIZE_THE_SCENE
        SET TEST_BUTTON PANEL_BUTTON_STATUS TO ON
        MOVE ' ' TO TEST_INPUT PANEL_INPUT_TEXT
        DISPLAY PANEL PANEL_MUSIC
    
    PROCESS_PANEL_WIDGET
        ACCEPT PANEL PANEL_MUSIC
    
    *** CHECK FOR BUTTON CLICK
        IF RTG_PANEL_WIDGET_NAME IS EQUAL TO 'TEST_BUTTON'
           MOVE 'I LIKE THE BEATLES!' TO TEST_INPUT PANEL_INPUT_TEXT.
        DISPLAY PANEL PANEL_MUSIC
    

    beklendiği gibi tüm kapaklar. Sonuçta, okumak daha kolay. Beyaz alana dikkat edin. Yine önemli. Tüm işlem adları sütun 0'da başlamalıdır. Başlangıç talimatların seviyesi sütun 4'te başlamalıdır. Daha derin seviyeler tam olarak 3 boşluk girintili olmalıdır. Bu önemli bir şey değil, çünkü nest conditionals gibi şeyler yapmanıza izin verilmiyor. İç içe geçmiş bir oda ister misin? Bir şey düzgün çalışmıyor ve ne olduğundan emin değiliz. Ve lezzetli COBOL-esque sözdizimi dikkat!

    döngüler ister misin? Kolay:

    EXECUTE NEXT_CALL
    EXECUTE NEXT_CALL 5 TIMES
    EXECUTE NEXT_CALL TOTAL CALL TIMES
    
    EXECUTE NEXT_CALL    UNTIL NO LINES ARE AVAILABLE
    EXECUTE NEXT_CALL    UNTIL CALLS_ANSWERED ARE EQUAL TO CALLS_WAITING
    EXECUTE READ_MESSAGE UNTIL LEAD_CHARACTER IS A DELIMITER
    

    Ugh.

    23
    cevap Greg D 2017-05-23 15:18:19
    kaynak

    İşte kendi soruma katkısı:

    Origin LabTalk

    bu konuda benim tüm zamanların favori Origin LabTalk . LabTalk bir dize değişken tanımlayıcı maksimum uzunluğu bir karakteridir. Yani, sadece 26 dize değişkeni var. Daha da kötüsü, bazıları menşei tarafından kullanılır ve hangilerinin açık değildir.

    Kılavuzdan:

    LabTalk tanımlamak için % gösterimini kullanır bir dize değişkeni. Yasal bir dize değişken adı % karakter olmalıdır tek bir alfabetik takip karakter (A'dan Z'ye bir mektup). Dize değişken adları caseınsensıtıve. Tüm 26 dize var olan değişkenler, köken kendisi kullanır 14.

    Kapılar DXL

    benim için ikinci bence en kötüsü Kapılar DXL . Programlama dilleri iki gruba ayrılabilir: Manuel bellek yönetimi olanlar (örneğin, silme, ücretsiz) ve bir çöp toplayıcı olanlar. Bazı diller her ikisini de sunuyor, ancak dxl muhtemelen dünyadaki tek dildir destek de yok. Tamam, dürüst olmak gerekirse bu sadece dizeler için geçerlidir, ama hey, dizeler tam olarak değil mühendislik yazılımında en nadiren kullanılan veri türü.

    sonuç olarak, bir dize tarafından kullanılan bellek asla geri alınamaz ve Kapılar dxl elek gibi sızar.

    sadece birkaç isim, dxl sayısız diğer tuhaflıklar vardır:

    22
    cevap Ludwig Weinzierl 2017-05-23 15:26:24
    kaynak

    Soğuk Füzyon

    sanırım tasarımcılar için iyi ama bir programcı olarak her zaman bir el arkamdan bağlanmış gibi hissettim.

    21
    cevap Ken Burkhardt 2009-06-10 17:06:38
    kaynak

    ile çalıştığım en kötü iki dil apl'di, bu da yaşı olan diller için nispeten iyi biliniyordu ve TECO, orijinal Emacs'in yazıldığı dildi. Her ikisi de terse, anlaşılmaz sözdizimi için dikkat çekicidir.

    APL bir dizi işleme dilidir; son derece güçlü, ancak okumak neredeyse imkansız, çünkü her karakter bir operatördür ve çoğu standart klavyelerde görünmüyor.

    TECO benzer bir görünüme sahipti, ve benzer bir nedenle. Çoğu karakter operatördür ve bu özel amaçlı dil metin dosyalarını düzenlemeye ayrılmıştır. Standart karakter setini kullandığı için biraz daha iyiydi. Ve emacs'a hayat veren işlevleri tanımlama yeteneğine sahipti - insanlar makro yazdı ve sadece bir süre sonra çağrıldı. Ama bir program yaptığını anlamaya ya da yeni bir tane yazmak oldukça zor oldu.

    20
    cevap PanCrit 2009-06-07 20:35:56
    kaynak
    HAI
    CAN HAS STDIO?
    VISIBLE "HAI WORLD!"
    KTHXBYE
    

    cidden, en kötü programlama dili Makefiles'tir. Tamamen anlaşılmaz, sekmelerin sözdizimsel bir anlamı var ve neler olduğunu bulmak için bir hata ayıklayıcı bile yok.

    19
    cevap Tobias 2009-06-07 20:26:19
    kaynak

    komut dosyası dilleri eklemek isteyip istemediğinizden emin değilim, ancak TCL'Yİ gördüm (ki bu da can sıkıcı), ama... mIRC komut dosyası dili beni sonuna kadar rahatsız ediyor.

    ayrıştırmada bazı gözetim nedeniyle, olması gerekmediğinde boşluk önemlidir. Bu nedenle atlanması gerektiğinde koşullu ifadeler bazen yürütülür. Bir blok deyimi açılması ayrı bir satır, vb yapılamaz.

    bunun dışında, muhtemelen çok temel şeyleri kolaylaştırmak için bu şekilde tasarlanmış dağınık, tutarsız sözdizimiyle doludur, ancak aynı zamanda biraz daha karmaşık ve okunabilir bir şey yapar.

    mIRC komut dosyalarımın çoğunu kaybettim ya da muhtemelen sizi yaratmaya zorlayan korkunç bir karmaşanın bazı iyi örneklerini buldum: (

    19
    cevap Thorarin 2009-06-07 22:52:34
    kaynak

    Visual Foxpro

    18
    cevap Arnis Lapsa 2009-06-07 18:20:32
    kaynak

    düzenli ifadeler

    sadece bir yazma dilidir ve doğru girişler için doğru çalışıp çalışmadığını doğrulamak zordur.

    18
    cevap oɔɯǝɹ 2009-06-07 23:08:40
    kaynak

    I can't belive nobody has said this one:

    LotusScript

    en azından php'den çok daha kötü olduğunu düşünüyorum.

    , Visual Basic'e benzer bir sözdizimini izleyen dille ilgili değil, asla kullanamayacağınız (veya bir milyon kez) son derece kullanışsız şeyler için çok fazla işleve sahip gibi görünüyor, ancak her gün kullanacağınız şeyler için destek yok.

    herhangi bir somut örnek hatırlamıyorum ama onlar gibi:

    " Tamam, fare işaretçisinin formun üst köşesinde olup olmadığını kontrol etmek için bir etkinliğim var ve Form için çift tıklama etkinliğim yok!!?? WTF??"

    17
    cevap Jorge Córdoba 2009-06-08 15:57:06
    kaynak

    iki kez, 'diller' de çalışmak zorunda kaldım; burada, n-dropped modüllerini sayfaya sürükleyip veri akışını göstermek için satırlarla birbirine bağladım. (Biri bir RDBMs olduğunu iddia etti, diğeri genel amaçlı veri toplama ve sayı çatırdayan dil.)

    sadece bunu düşünmek beni ne birine gaz vermemi sağlıyor. Ya da kusmak. Ya da ikisini de.

    daha da kötüsü, ne doğrudan kesmek olabilir bir metin dili maruz.

    17
    cevap dmckee 2009-06-09 17:32:36
    kaynak

    kendimi VBScript/Visual Basic 6 en çok kullanmaktan kaçınıyorum.

    çoğu görev için öncelikle C++, javascript, Java kullanıyorum ve ihtiyaç duyulduğunda ruby, scala, erlang, python, assembler, perl'de dolaşıyorum.

    ben, diğer makul fikirli poliglotlar/programcılar gibi, iş için doğru aracı kullanmanız gerektiğini kuvvetle hissediyorum - bu, alanınızı anlamanızı ve araçlarınızı anlamanızı gerektirir.

    VBscript ve VB6 ile olan sorunum, Windows veya office uygulamalarını (onlar için doğru alan) komut dosyası için kullandığımda-kendimi dille mücadele ederken buluyorum (doğru araç olmaktan kısa düşüyorlar).

    Vbscript'in yerel veri yapılarını (ilişkisel kapsayıcılar/haritalar gibi) ve diğer tuhaflıkları (nesnelere atama için ayarlanmış gibi) kullanması kolay olmaması, özellikle bir komut dosyası dili için gereksiz ve sinir bozucu bir sıkıntıdır. Kontrast Javascript ile (şimdi wscript/cscript Windows'u programlamak ve activex otomasyon komut dosyalarını yapmak için kullandığım) çok daha etkileyici. Vbscript ile daha iyi çalışan bazı şeyler olsa da (örneğin, olay işleyicilerini JScript ile COM bileşenlerine geçirmek daha kolay olsa da, com nesnelerinden ileri geri diziler geçmek biraz daha kolaydır), yine de vbscript'i Windows komut dosyası için kullanan kodlayıcıların miktarına şaşırdım-bahse girerim her iki dilde de aynı programı yazmışlarsa jscript'in yerel karma veri türleri ve kapanışları nedeniyle jscript'in vbscript'ten çok daha fazla çalıştığını bulacaklar.

    Vb6/VBA, genel olarak vbscript'den biraz daha iyi olsa da, (etki alanları için), diğer betik dillerinde gördüğüm ve gördüğüm basit görevleri yapmak için çok daha fazla kazan plakası gerektiren birçok benzer sorun var.

    17
    cevap Faisal Vali 2011-12-10 20:36:28
    kaynak

    , 25 + yıllık bilgisayar programlamasında, şimdiye kadar yaşadığım en kötü şey, MEDİTECH Magic adlı kabakulak türeviydi. UMDUĞUMDAN çok daha kötü.

    atama için ' = ' bile kullanmıyor! 100^b, 100 ila b değeri atar ve "100 B'ye gider" olarak okunur. Temel olarak, bu dil kendi sözdizimini yukarıdan aşağıya doğru icat etti. Yani olursa olsun kaç programlama dilleri biliyorum, sihirli tam bir gizem olacak sen.

    Burada bir dilin bu iğrenç yazılı duvarda bira 100 şişe:

    BEERv1.1,
    100^b,T("")^#,DO{b'<1 NN(b,"bottle"_IF{b=1 " ";"s "}_"of beer on the wall")^#,
                              N(b,"bottle"_IF{b=1 " ";"s "}_"of beer!")^#,
                              N("You take one down, pass it around,")^#,b-1^b,
                              N(b,"bottle"_IF{b=1 " ";"s "}_"of beer on the wall!")^#},
    END;
    
    16
    cevap 17 of 26 2009-06-09 17:46:00
    kaynak

    TCL. Sadece çalıştırmadan hemen önce kodu derler, bu nedenle kodunuz bir süre test edildikten sonra daldan asla inmezse ve bir gün, a şubesinden inerse, bir sözdizimi hatasına sahip olabilir!

    16
    cevap dicroce 2009-06-14 05:23:20
    kaynak

    Diğer sorular programming-languages