如今,我们有许多编程辅助工具可简化工作,其中包括:
集成开发环境
调试器(逐行,断点等)
Ant脚本等进行编译
像StackOverflow这样的网站可以帮助您解决编程问题
20年前,这些事情都不存在。人们使用了哪些工具进行编程,而没有这些更新的工具,他们又如何做?我有兴趣进一步了解当时的编程方式。
如今,我们有许多编程辅助工具可简化工作,其中包括:
集成开发环境
调试器(逐行,断点等)
Ant脚本等进行编译
像StackOverflow这样的网站可以帮助您解决编程问题
20年前,这些事情都不存在。人们使用了哪些工具进行编程,而没有这些更新的工具,他们又如何做?我有兴趣进一步了解当时的编程方式。
Answers:
20年前,即1991年。那年是Borland C ++ 2.0 IDE发行的一年。使用集成调试器(逐行和断点),使用make自动构建。
看起来像这样 http://www.ee.oulu.fi/research/tklab/courses/521419A/tc201_compile.png
您没有像Stackoverflow这样的网站,但是有了IDE,您就可以得到几千页印刷精美的文档。
20年前... 1991 ...
让我们来看看。我正在使用SunOS和VAX VMS。
我们使用文本编辑器(vi或edit)编写了代码。
我-个人-不使用调试器,也从未使用过。有些人在SunOS上使用了adb调试器。我实际上使用了几次,以从核心转储文件中恢复堆栈回溯。我不知道VAX VMS提供了什么。我在代码中使用了打印语句。
我们使用make进行编译。
我们阅读了纸质文档,进行了思考并进行了实验。确实,这仍然有效。堆栈溢出被少数人过度使用,出于莫名其妙的原因,他们拒绝进行实验或思考。
30年前... 1981 ...
让我们来看看。我正在使用Univac Exec 8和IBM OS。
我们使用文本编辑器编写了代码(我不记得Univac的代码,但是IBM的是TSO环境的编辑器)
我-个人-不使用调试器,也从未使用过。这些机器是“大型机”,不可能一anything而就。没有“调试器”。您必须在代码中插入打印语句。
我们编写了脚本进行编译。
我们阅读了纸质文档,进行了思考并进行了实验。
40年前... 1971年...
让我们来看看。我正在使用没有操作系统的IBM 1620。
我们使用打孔纸卡编写代码。
调试意味着单步执行处理器。它很少有用,所以我学会了在代码中插入“打印”语句。
我们手动运行编译器以产生一叠打孔纸卡,然后运行。“手工”是指从字面上将卡加载到读卡器中以安装编译器或汇编器。然后将源代码加载到读卡器中以生成目标代码。然后将生成的目标代码加载到读卡器中以运行程序。
我们阅读了纸质文档,进行了思考并进行了实验。
“下车我的草坪你烂孩子”
IDE。几乎没用。代码完成可能很有趣,但没有某些人声称的有用。我曾经让人们告诉我,由于Visual Studio,VB是一种可接受的语言。语法着色可能是有史以来最有用的功能。其余的应该是可选的附加组件,这样我们就可以省掉它们并释放内存和处理器周期。
随着拐杖的到来,还有更糟糕的事情要依靠。
调试器。无用。除非语言定义太差而语义模糊不清,以致您无法理解应该发生的情况。例如,VB。当需要调试器时,确实是时候获得更好的语言了。
根据我在编程方面的经验,调试器可能无济于事。对于某些人来说,它们导致思维混乱,并产生怪异的经验式编程风格,其中代码没有语义意义-没有意义-仅仅是纯粹的黑客手段。
Ant脚本等进行编译。增量编译和链接并不是一个好主意。对于超复杂的语言,这是一个必要的技巧,但确实需要将其视为一种技巧。这不是必要的,甚至不是不可取的。
一种更好的语言,较少依赖增量编译,这似乎比复杂的Ant脚本要好得多。
诸如Stackoverflow之类的网站可以帮助您解决错误。有时会有所帮助。
与调试器一样,有些人可能会因为简单的大失所望而看起来很成功。那是一件坏事。
嗯,你的前提不是很正确。后两项是正确的,但是20年前我们有了IDE和调试器。
实际上,调试器一直存在。自从Brooks的团队建造了旧的IBM大型机以来,它们的设计和使用就不断发展,因为我们都有自己的专用机器。但是,现在我们可以为多种不同的语言进行相同的调试器工作(有关示例,请参见GCC项目或MS Visual Studio)。
20年前,我们没有ANT,但我们肯定有Make。该工具甚至有几个不兼容的版本。这就是人们用来构建项目的方式。
而且虽然网络尚不可用(它仍然是大学和军方的研究项目),但我们确实有书籍和杂志。杂志提供了最新的信息,书籍处理了这一理论。
该死的孩子们。1991年?真?那您当时在想什么?我的意思是,Turbo Pascal仍然很性感,Netware仍然是Windows的有效竞争对手,快速计算机的测量单位仍然是MHz,但除此之外,并没有太大的不同。再回溯10年,您谈论的是绿屏内容,但是这些系统也有IDE。
您必须回到70年代中期才能找到打孔卡和类似的废话。
有很多很棒的工具。Unix内核是如何构建的?并编译?以及所有其他大型应用程序,例如Lotus 123,Corel Draw,Wordperfect,Xenix,MS Windows,X Windows,gnu,Kings Quest,Flight Simulator等
Unix有大量的程序员生产力工具,例如用于代码分析的lint,用于编译的make以及用于编辑的vi或emacs。使用Korn外壳(可能还有其他外壳),您可以暂停一位编辑器并在0.5秒内跳到另一位编辑器,然后在带有绿色屏幕的慢速拨号调制解调器上进行操作(“看着草丛生”)。您可以使用dbx进行调试,也可以只读取核心转储。
如果您有钱购买图形终端,则可以使用X Windows和xdbx进行真正的调试。
那里有互联网,但没有WWW。我们有匿名FTP,gopher和WAIS。还有网络新闻组(例如comp.lang.c)用于发布问题(现在主要是垃圾邮件)。
这些工具功能强大。有没有看过一两天的内核重建运行?它将在makefile之后构建makefile,从而构建所有这些依赖项。甚至还有pmake可以检测可以并行构建的目标。蚂蚁能做到吗?
在PC上,出现了令人惊叹的Borland产品,例如Turbo Pascal(v4在80年代中期问世时是一个巨大的变化)。
有趣的时刻。和有趣的价格。Windows 3 SDK盒有提手,但需要两只手抬起,磁盘太多,手册堆高1英尺。关系数据库每位用户的成本为数千美元,Unix战争,斜杠密钥的电子表格战争。我为如此疯狂的低价/免费获得的工具感到惊讶。
所有这些中最有趣的部分是,某些Visual Studio按键命令(CTRL-K + CTRL-C)是旧的Wordstar命令。每次使用时都会有点怀旧。
20年前,我在Atari ST 1040上的GFA Basic中进行编程:
我认为“网络年”现象使您的日期计算有偏差。
20年前,我在Smalltalk中编程-这是具有20英寸屏幕的Mac IIe上基于GUI的第一批基于GUI的语言之一,因此,我认为您必须比那再回头几年才能得到熊皮和石头刀时代的编程。
现在40年前,我正在使用具有电声耦合器式调制解调器(110波特的宝贝!)的电传打字机终端进行基本编程-您知道拨打电话的那种,然后将手插入调制解调器的橡胶杯中。
这是一个标准表格,可以帮助您在弄乱打孔卡之前编写FORTRAN程序。
(摘自:http://www.w3.org/2010/Talks/01-08-steven-ten-euro-computer/)
请务必使用铅笔,以便您清除错误,并在打印的报表之间留一些空白行,以防您忘记某些步骤。
(好吧,也许这是一个有点 1991年之前,但不是很多...)
好吧,这一切都是从打孔卡开始的,但是我敢肯定,您至少听说过该历史课程。但是,这可以追溯到20多年前。
进行调试?许多消息框,日志文件和其他输出方法可帮助检查并查看刚刚发生的情况。
20年前,4GL风靡一时。
令人惊讶的是,二十年前事情并没有什么不同。现在30年前...
现在,当我写这个答案时,请记住我当时才10岁,但是仍将5.25英寸软盘插入支持1 MB硬盘的IBM Headstart XT / AT PC。为什么要回答这个问题?
因为在我工作的地方,我们维护了20年的系统和代码库,所以在使用遗留系统,开发环境和代码时,我们仍然处于时间扭曲状态。
20年前,我主要在Pascal C语言中进行编码。对于DOS平台,有Turbo C,Turbo Pascal和Turbo C,它们大多是带有调试器的完整编辑器,可逐步进行。对于真正的编程,我觉得像我一样的大多数程序员都使用vi +编译器,它们从命令提示符处运行。
那时的编程一点也不困难,尤其是对于某些编程语言而言。我仍然可以在自己的编程中看到这些痕迹:我发现使用print
语句运行测试比单步执行语句更容易。
我可以为保加利亚发言。
与您可能相反的是,保加利亚是计算机技术的领先国家之一。作为共产主义的一部分,苏联在计算机科学领域投入了大量资金,使其在共产主义领域处于行业领先地位。但是共产党人不容忍私人公司,这方面的一切都由政府管理。因此,几年前共产主义国家的瓦解,使该国没有稳定的业务来维持该行业的良好状况。但是,下一代专家仍然拥有丰富的知识遗产。因此,我们从未停止过使用最新技术的机会,并且软件开发与西方国家没有不同。我们使用了最新的尖端工具和编程概念。
因此,我不会重复其他人所说的所有内容,但是是的,当时有相当不错的IDE和调试器(与当时开发的软件的性质相对应)。
我记得我曾经使用过Turbo Pascal和Turbo C(Borland编写)。也是用于图形的Autodesk软件(例如3d Studio和Animator)。
但是,知识的来源更加有限-主要是书籍,杂志,同事,很少通过BBS获得电子杂志。互联网主要是古玩。有些可以访问Usenet,但很少使用它来工作。
到现在为止,您应该会看到您喜欢的大多数工具的简单版本出现在1991年,尽管分布不均。
比较有趣的是与1981年的比较:涉及USENET,UUCP和ARPANET网络的广泛可用的社会过程的开始。(Internet的TCP卖旗日是1983年。)
与1971年进行的更有趣的比较是:您现在知道并喜欢的早期版本的操作系统,基于发布的社会过程(纸质时事通讯,亲自参加的会议,与个人联系人共享代码,用户组以及使用诸如磁带之类的媒体)。
20年前,我使用Windows编程的OWL在Borland C ++ 386上进行编码。
我的机器有几MB的RAM和200MB的硬盘。我可以从软盘上安装大多数软件-但是CD上越来越多的软件来了。
当我按F8键在Borland上“运行”我的项目时,编译器将很快运行,并且我可以立即处理结果。
我们办公室里有一台PC,每隔几个小时就会发出噪音(使用Trumpet WinSock连接到Demon)并下载每个人的电子邮件。
当我们无法解决如何编程的问题时,我们通常会在书中查找答案-Win32 API书特别有用。
实际上,我们的工作效率很高……那时的IDE工作很快!但是他们没有好的重构和好的集成测试工具。
20年前?我使用的是出色的IDE,以及出色的拖放式UI生成器和项目经理。有一种非常好的OO语言,一组非常好的GUI对象,许多出色的应用程序以及一个使我拥有坚固的Unix shell的终端窗口。还有一个调试器,但我同意那些是针对弱者(或处理他们的丑陋代码)的。
如果听起来像Mac,那是因为我在谈论NeXT开发环境,它变成了现代Mac OS。对于打ipper者,您可以在此处阅读历史记录:
附带一提,我会说那里很棒的GUI构建完全毁了我。当我开始用Java开发Swing应用程序时,就像有人的狗吃了一份过时的GUI API文档并将其再次抛出来,Sun便将其发布了。谢天谢地,网络终于可以普及了。
我从1981年开始编程,直到30年前的这个秋天。
1991年,我在Apple Computer(如今又名“ Apple”)工作,并与一家名为Metrowerks的加拿大小型公司紧密合作。
Metrowerks正在为C,C ++和Pascal构建一个踢屁股的IDE。在苹果成功从68K过渡到PowerPC处理器的过程中,这种环境发挥了重要作用。
尽管我是苹果公司的员工,但我还是有效的Metrowerks的产品经理,与Greg Galanos和Jean Belanger在产品策略等方面紧密合作了几年。正是苹果公司与第三方开发人员之间的紧密合作使Power Macintosh成为可能。过渡,Apple第一次实现了出色的Mac过渡(第二次是向OS X的过渡)。
1981年,我进入了UCSC大一新生,并有机会开始在PDP-11 / 70上运行Unix版本7(而非版本7)。
这里没有IDE!哎呀,几年后我们才有了版本控制!
它是vi(而vim不是选择),cc,ln和make。它正在编写C Shell脚本并将源代码窃取到C Shell以将环境变量的大小从512个字符增加到1024个字符,以适应我们“智能终端”越来越复杂的TERMCAPS。
它有机会在独联体上层学生特德·戈德斯坦(Ted Goldstein)的校外公寓地板上阅读《狮子书》的盗版本。泰德(Ted)进入了非常完整的职业生涯,其中包括苹果公司工具副总裁。
1984年,我开始使用Mac和MDS(Macintosh开发系统)的早期版本,并开始学习对这种新奇的野兽进行编程。
很好玩。起来并运行起来要容易得多。但是我们使用Ruby之类的语言所具有的强大功能令人难以置信。我没有为我的编译器符号表编写哈希表,而是左右使用它们作为基本数据类型!
是的,这很有趣,但我不会回去...
28年前,我为6809处理器(在Dragon 32中为那些记得它的人)手工编写了十六进制汇编代码-最终我为它编写了一个相当不错的汇编程序。
没有调试器-如果不起作用,则可以添加打印代码以查看堆栈。晚安!高效的代码有所帮助,因为出错的行很少
如今,我必须学习Clearcase,Maven,Ant和VS-都很好玩(但我想念过去)
20年,是吗?在那之前不久,我只是在那个时候在PC-land工作。那时,我记得有钱的孩子有成熟的IDE,带有集成调试功能(Borland和Microsoft)。我们其余的人都在与低价品牌合作,这些品牌虽然运作良好,但并没有那么“整合”(Mix Software,各种共享软件编译器供应商)。鼠标在桌子上,但很少有人触摸。90%的时间用于文本模式。双显示器设置开始逐渐消失(早于此,在MDA和CGA卡使用不同的I / O /内存位置的同一系统中,通常具有单色编码显示器和彩色“运行”显示器是很常见的)在DOS中同时运行)。Windows的早期版本对多台显示器不满意。
流行的语言是C,Pascal和Modula-2。人们仍然使用徽标和BASIC。不过,“ Visual BASIC”终于开始杀死BASIC。大学期间正在教授COBOL和RPG。
有钱的孩子们正在Internet上使用USEnet,而有钱的孩子们仍在拨入本地BBS并使用FIDOnet组(通常1200-2400bps,9600bps的调制解调器对于大多数人来说还是负担不起的,其价格几乎是其余用户的价格。电脑)。
我在70年代编程的第一台计算机是Univac 1218。1218具有极简主义的执行器和16K的18位面向字的铁氧体磁芯存储器(因此,术语“磁芯转储”)。通过磁带和Hollerith编码的80列打孔卡处理二级存储。机器将一个补码用于算术,将两个补码用于寻址。可以使用前面板对它进行编程和调试,使用发光的按钮开关在其上显示所有寄存器的内容。从现代的标准来看,这个CPU看起来很原始,但是在当时对我来说非常酷。
回到主题上:20年前,我大部分时间都在使用IDE。我不是那些那些相信IDE是弱者的硬汉。一个好的IDE是生产力放大器。
20年前,我是一个使用Interface Builder和Objective-C为NeXTstep OS创建桌面发布应用程序的团队的成员。而且,是的,互联网是各地,这只是一个有点难以用-但我能找到,并在comp.sys.next后的答案。
我调试 Sun公司在1989年调试器作为合同开发技术支持人员。
近30年前,我使用的是IDE-UCSD p-System / Apple Pascal。写了Sundog:Apple Pascal和6502组合件(1982-84)的《 Apple II冷冻遗产》。也写了我自己的p-code / 6502反汇编程序。为此,我早在1981年就在月球与行星研究所的Northstar Horizon(Z-80)微型计算机上使用UCSD p-System。
1963年,我在校园里打暑假。它在Digital(DEC)生产的PDP-1计算机上。
是的,它有一个称为DDT的交互式调试器。您可以设置一个断点,检查和更改变量,补丁代码。文本编辑器非常原始,我们经常使用离线纸带机代替。
语言是汇编语言。机器有18位字的4k之类的东西。没有操作系统。
到1971年,我使用的是PDP-10,每个262144个字,每个36位。一个交互式分时系统,可能支持10个并发用户,一个名为TECO的文本编辑器,一个仍称为DDT的调试器以及Lisp,Fortran,Basic和Algol等语言。TECO非常强大。您可以在其中编写文本操作程序。
PDP-10是Palo Alto Research生产的类似机器的基础,该机器诞生于未来的办公室。以太网,鼠标和GUI,电子邮件,激光打印机以及面向对象的程序。帕洛阿尔托(Palo Alto)拥有了所有这些。比PC早十年。
很多东西已经被遗忘,从那以后的几年里又被重新发明了几次。当然,还有很多新东西。
展望1991年,我正在研究VAX。我的主要语言是SQL,尽管我在必要时用PASCAL编写了一些东西。我也使用DCL和Datatrieve作为脚本语言,尽管我们没有使用该术语。
VAX当时没有IDE,至少在我工作的地方没有。但是,文本编辑器,编译器,链接器,调试器和命令语言都是在开发人员将要使用所有它们的想法下构建的。他们一起工作得很好。记住一些命令并不比记住给定工具在工具栏上的位置困难。通过重新调用命令,可以更轻松地重新键入命令。
VAX具有出色的调试器,但我从未学过。通过PASCAL,可以很容易地使程序正确开始,而通过结构化编程,可以很容易地在不使用调试器的情况下定位错误。调试SQL完全是另外一回事。
除了使用VAX之外,我还使用桌面工具在本地处理数据。我不记得这些不是MS Office工具还是它们的前身。困难的部分是将桌面工具链接到VAX上数据库中存储的数据。