Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Programming languages 你用过的最糟糕的编程语言是什么?_Programming Languages - Fatal编程技术网

Programming languages 你用过的最糟糕的编程语言是什么?

Programming languages 你用过的最糟糕的编程语言是什么?,programming-languages,Programming Languages,如果你有一个有趣的故事要讲 分享,请发布答案,但是 不要滥用这个问题进行抨击 一种语言 我们是程序员,我们的主要工具是我们使用的编程语言 虽然有很多关于最好的一个的讨论,我想听听你的故事 您使用过的最糟糕的编程语言,我想知道到底是什么让您恼火 我想收集这些故事,一部分是为了避免在设计语言(特别是DSL)时常见的陷阱,另一部分是为了避免将来出现古怪的语言 这个问题不是主观的。如果一种语言只支持单字符标识符(请参阅),这是不可争辩的错误 编辑 一些人担心这个问题会吸引巨魔。 仔细阅读你所有的答

如果你有一个有趣的故事要讲 分享,请发布答案,但是 不要滥用这个问题进行抨击 一种语言


我们是程序员,我们的主要工具是我们使用的编程语言

虽然有很多关于最好的一个的讨论,我想听听你的故事 您使用过的最糟糕的编程语言,我想知道到底是什么让您恼火

我想收集这些故事,一部分是为了避免在设计语言(特别是DSL)时常见的陷阱,另一部分是为了避免将来出现古怪的语言


这个问题不是主观的。如果一种语言只支持单字符标识符(请参阅),这是不可争辩的错误


编辑

一些人担心这个问题会吸引巨魔。 仔细阅读你所有的答案,有一件事是清楚的。 绝大多数答案都是恰当的、有用的、写得很好的

更新2009-07-01 19:15 GMT

语言概述现已完成,涵盖102个答案中的103种不同语言。 我决定对什么算是一种编程语言以及包括什么都不严格 任何合理的。谢谢你对此的评论

以下是迄今为止涵盖的所有编程语言 (字母顺序,与答案链接,新条目以粗体显示):

,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


涵盖80386汇编程序、VB6和VBScript的答案已删除

Visual Foxpro

以下是对我自己问题的贡献:

源LabTalk

在这方面,我一直最喜欢的是。 在LabTalk中,字符串变量标识符的最大长度为一个字符。 也就是说,总共只有26个字符串变量。更糟糕的是,其中一些是由Origin本身使用的,但不清楚是哪一种

从手册中:

LabTalk使用%符号来定义 字符串变量。合法的字符串 变量名必须是%字符 后跟一个字母 字符(从a到Z的字母)。 字符串变量名为 不区分大小写。在所有的26个字符串中 存在的变量,原点本身 使用14

Doors DXL

对我来说,我认为第二糟糕的是。 编程语言可分为两组: 具有手动内存管理(例如删除、释放)和具有垃圾收集器的。 有些语言同时提供这两种语言,但DXL可能是世界上唯一一种这样做的语言 两者都不支持。好的,老实说,这只适用于字符串,但嘿,字符串不完全是 需求工程软件中最很少使用的数据类型

其结果是,字符串使用的内存永远无法回收和使用 门DXL像筛子一样泄漏

DXL中还有无数其他的怪癖,仅举几个例子:


TCL。它只在执行之前编译代码,因此,如果您的代码在测试过程中从未出现分支A,并且有一天在字段中出现分支A,则可能出现语法错误

带行号的旧skool基础将是我的选择。当行号之间没有空间来添加新行时,您必须运行重新编号实用程序,这会导致您失去任何指向何处的精神锚


结果,您在一行中压缩了太多语句(用冒号分隔),或者在其他地方执行了goto或gosub,以完成无法填充的工作。

MS Access Visual Basic for Applications(VBA)也非常糟糕。访问完全是不好的,因为它迫使你放弃了一个薄弱的范例,而且开始起来似乎很简单,但完成起来却是一场噩梦。

关于Cobol还没有答案吗?:OPHP(无特定顺序)

  • 函数名和参数顺序不一致
    • 因为有无数函数,每个函数似乎使用不同的命名约定和参数顺序。“让我们看看……是foo_bar还是foobar或foobar……是还是?”PHP字符串函数就是一个很好的例子。其中一半使用,另一半使用
  • 非标准日期格式字符
    • j
      为例
      • 在中(顺便说一句,这是其他人用作日期字符串格式指南的内容)
        %j
        返回一年中以前导零开头的日期
      • 在PHP函数中,
        j
        返回不带前导零的月份日期
  • 仍然不支持Apache 2.0 MPM
    • 为什么不支持这一点?“当您没有完全独立的执行线程、完全独立的内存段和一个强大的沙箱来处理每个请求,从而使底层框架变得更加复杂时,PHP系统中就引入了泥脚。”。。。它不受支持,因为它让事情变得更难因为只有简单的事情才值得去做,对吗?(公平地说,正如所指出的,这通常归因于糟糕的第三方LIB不是线程安全的,而PHP的核心是线程安全的。)
  • 不支持本机Unicode
    • 我很高兴我们过去没有生活在一个需要用其他语言与人交流的全球环境中,噢。哦,等等。(平心而论,在当今这个时代,所有东西都不使用Unicode这一事实让我非常恼火。我的观点是,我不应该为了实现Unicode而做任何额外的工作。这不仅仅是PHP的问题。)
我还有其他啤酒
Set foo = Nothing
On Error Resume Next

' Do something

If Err.Number <> 0
  ' Handle error
  Err.Clear
End If

' And so on
Call Foo (a, b)
str = "Hello, " & _
      "world!"

    for i from 1 to 4
    Select... time time
    bandwidth'i'$ = Get bandwidth... i
    forhertz'i'$ = Get formant... i
    endfor
    
HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE
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;
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
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
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
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