但他一点也不喜欢上学,用他自己的话说: 我每年都不及格。我从来没有学过。我讨厌学习。我只是随便玩玩。这带来了一个令人愉快的结果,我每年都去新罕布什尔州的暑期学校,在那里我度过了一个又一个愉快的夏天。...在理论方面,有一些很有希望的结果。一些研究人员描述了我们现在所说的高级编程语言。有些甚至附有该语言的编译器的描述,但它们都缺乏用于真正计算机的可工作的编译器。...它缺少的是块结构:所有变量都是全局的,没有动态存储(比如堆栈),所以递归是不可能的。...你可以通过观察一个程序员对FORTRAN持续生命力的态度来衡量他的观点。" 巴克斯:"我们不知道自己想要什么,也不知道如何去做。它就这么增长了。第一个问题是语言应该是什么样的。...戴维斯说他直到很久以后才开始教这门课: 这里有一个奇怪的困惑。我发誓,学习语法的想法来自埃米尔·波斯特,因为我曾在兰姆庄园(位于哈德逊河畔的IBM智库)上过马丁·戴维斯的课。
因此,编程语言的设计应该引导程序员将程序分解成可管理的部分,帮助程序员使代码大部分具有可读性,当代码发生错误时,不应该太难找到并修复它们。...生成的程序应该以可预测的方式运行,最好是无错误的。当 bug 简单地给出错误的答案时,它尤其糟糕,就像在汇编程序中对一个固定的点号执行浮点操作一样。...在危急情况下,Ada 应该是最佳选择。对于 C 程序中的每 100 个错误,对应的 Java 程序中大约有 50 个错误,而 Ada 版本中只有 4 个错误。...我认为 Java 的一个错误是它没有简单数据对象的记录或结构类型。...XSLT 几乎没有代码来产生结果,它只是直接写在那里。 我使用 XSLT 的一个「亮点」是我的视角改变了。我不是用命令编写程序,而是用机器运行输入,所以输入实际上是控制输出的程序。
如果没有发现某个给出的 dir,不会作为错误报告,所以一个 configure脚本可以配置一个大的源代码树中出现的任何一个部分。...(实际上,它可以是任何C程序,但其它的语句可能没有用。)如果预处理器在处理它的时候没有报告错误,就运行shell命令 action-if-true。...如果两个选项都没有给出,就运行shell命令 action-if-not-given。名字 package给出了本程序应该与之协同工作的其它软件包。...这些站点配置信息应该被储存在一个仅仅由用户,而不是程序,编辑的文件中。文件的位置既可以基于 prefix变量,也可以是一个标准的位置,比如说用户的home目录。它甚至可能通过一个环境变量给出。...(它假定你有一个包含了设置成使用这些特征的程序的源代码树。) 同时安装某些程序的多个版本的一种方法是为其中一个程序的名称或为所有程序的名称附加版本号。
另一种面向对象的编程语言,Visual Basic .NET,已在很大程度上取代了它,如果你有兴趣开发Windows应用程序,你应该熟悉它。...与JavaScript API和微软集成相关的问题可能意味着该语言还将继续存在一段时间,但它实际上只是一个单一的应用领域。...尽管它的使用范围有限,但它有坚实的基础,Fortran开发人员可能还需要一段时间才能完全抛弃这种语言。...作为一种用于区分商业和科学计算的语言而开发,它已经自然消亡。 它与其他语言的集成性极低,对开发人员几乎没有影响力。尽管与联邦和政府要求相关联,但它的低调使得这种语言是一个小众领域。...由于它是一种过程性语言,Pascal成为初学者程序员的优秀学习工具。 Pascal稳步上升,但它从未为编程世界提供新的东西。虽然这种语言没有真正发展,但它的后继者非常创新。
我是说,软件开发发展到今天,差不多已经有 65 年了。而框架就更年轻了。断定你的语言或框架能活到一百年,这是一个相当大的论断。...Perl 1 和 Perl 2 看上去和 Perl 5 很不一样,没有人会争辩说我们不应该把 Perl 1 和 Perl 5 称为同一种语言。与 Perl 6 不同,它有一个相当连续的编程社区。...它们之间有很多共同点,可以让它们快速、顺畅地共享一个更大的开发者社区。 语言是如何消亡的? “消亡”是什么?大多数情况下,我的意思就是“消亡”,正如拉丁语的消亡。...它影响了 COBOL,但它本身从未被广泛使用过。许多如今已消亡的语言都是如此:用户很少,社区也不大。 如果你愿意,你可以包括很多“原始语言”。我指的是那些大多变异成其他语言的语言。...它的性能必须是可以接受的,但它主要是关于精确的逐位布局。如果它能减少几个 CPU 周期,就会有更多的 CPU 周期可供使用。因此,指针别名不会导致用 Fortran 编写设备驱动程序。
现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。 2. 函数也是一种数据类型。...Lisp古怪的形式,倒不是因为它的语法很古怪,而是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。...所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。...当我在自己的程序中,发现用到了模式,我觉得这就表明某个地方出错了。程序的形式,应该仅仅反映它所要解决的问题。...代码中其他任何外加的形式,都是一个信号,(至少对我来说)表明我对问题的抽象还不够深,也经常提醒我,自己正在手工完成的事情,本应该写代码,通过宏的扩展自动实现。 (完)
但如今再次谈到当初的决定时,他表示这是个价值十亿美元的大麻烦: “我称之为我的十亿美元错误……当时,我正在设计第一个全面的类型系统,用于面向对象语言的引用。...我的目标是确保所有对引用的使用都是绝对安全的,由编译器自动执行检查。但是我无法拒绝定义一个 Null 引用的诱惑,因为它实在太容易实现了。这导致了无法计数的错误、漏洞和系统崩溃。...他提醒道:“只要程序里有一个 Null 引用,那么它早晚会在你的对象结构里面惹出麻烦。”最后问题又回归了起点:在运行代码的时候,你更想要速度(不检查),还是更想要安全(有检查)。...事实上,客户也不会给出什么反馈——编程语言设计者们往往过度自信,总觉得错误是用户的事,跟自己没有关系。...Tony 表示:“我曾经不认同这一点,但现在我开始意识到——编程语言的设计是一项严肃的科学工程活动,我们应该对用户犯下的错误负责。”
虽然它反映层次值的能力是重要的,而且它的极简主义可能会让一些人耳目一新,但它对类似python的缩进语法的依赖可能会令人沮丧。...然而,开源世界是多样化和灵活的,没有人需要忍受复杂的技术,所以如果您讨厌 YAML,这里有 10 件您可以(而且应该)做的事情来让它变得可以忍受。从零开始,任何合理的索引都应该如此。 0....这里有一个例子: $ yamllint perfect.yaml && echo "OK" OK yamllint 在成功时之所以如此安静,是因为它在没有错误时返回 0 。 2....做一个配方 我非常喜欢重复产生熟悉,但有时重复只会产生重复的愚蠢错误。幸运的是,在公元 396 年,一位聪明的农妇经历了这种现象,并发明了这个 配方 的概念。...换用其他配置格式 总的来说,我是 YAML 的粉丝,但有时 YAML 并不能解决问题。如果您没有被正在使用的应用程序锁定在 YAML 中,那么使用其他配置格式可能会更好。
如果用户在销毁提供数据视图的对象之前销毁了 NumPy 数组,那么使用该数组可能导致错误的内存引用或分段错误。尽管如此,在处理大型数据集的情况下,有时您别无选择。...关于错误处理的注解: 注意,my_dot返回一个double但它也可以引发 Python 错误。当向量长度不匹配时,得到的包装器函数将返回 Python 浮点表示为 0.0。...如果用户在销毁提供数据视图的对象之前销毁了封装它的 NumPy 数组,那么使用该数组可能导致坏的内存引用或分段错误。尽管如此,在处理大型数据集的情况下,有时您简直别无选择。...有一个片段用于将 Python 整数转换为 C 的long。还有一个不同的片段将 Python 整数转换为 C 的int,它调用long片段中定义的例程。...**关于错误处理的注意事项:**请注意,my_dot 返回一个 double 值,但它也可能引发 Python 错误。当向量长度不匹配时,生成的包装函数将返回 Python 中的浮点表示 0.0。
网上说要分c为主程序和fortran为主程序两种情况讨论,其实我觉得不用,只要你了解生成可执行文件的机制。...所以我们也需要类似c++的做法改变fortran程序编译出来的符号 名。 我不知道fortran是否有extern “C”之类的东东。但是编译fortran程序是有选项可选的。...至于代参数的函数我没有涉及到,但我想都得从这个 基本出发吧。还有些程序会使用动态链接库.so,那么应该使用nm的-D选项查看这些动态符号。...比如,我们有一个fortran程序名为subf1.f,如下: subroutine sUbF1() print*,'hello world.' return end 如果有一个C程序希望调用sUbF1(...这是编译器(f77)的一个命名规则,没有为什么,它就是把你在fortran中的函数名字全转换成小写,然后在最后加一个下划线。我昨天搜了很多版本,头昏脑胀,怎么调都说找不到,也没有想到要自己看看。
如果你在安全领域工作,自认为还有道德,我觉得你应该在名片上增加一行:‘不,真的,我不是婊子。我保证。’” “我之前觉得整个(安全)行业已经够堕落的了,但没想到还能如此无耻。...我认为我们需要比这个垃圾更好的东西。 C++ C ++ 是由 Bjarne Stroustrup 创造的,他想建立一个系统编程语言,有 C 的速度和效率,但具有 Simula 语言的一些特性。...2006年11月28日 GNOME GNOME 是一个可以在多数 Linux 发行版获取的开源桌面环境,它提供了一个图形用户界面和多种应用程序。...多年后,Java 没有像他预言那样,Java 语言已经很繁荣,而且代码已经开源,但 Torvalds 似乎仍然没有对 Java 有很高的评价。...“我对 Mach 的个人评价不是很高。坦率地说,它就是个废物。它包含了所有你能制造出来的所有设计错误,甚至有些错误就是它自己本身。“2001年 ”我认为开发 Mach 的人是个无能的白痴。
但是,如果你曾经和这些人一起共进晚餐,你也会知道他们对 Python 的弱点有多不满。从运行缓慢,到要求过多的测试,到不顾之前的测试而产生运行时错误——这些都足以让你恼火。...这意味着程序在运行时决定变量是浮点型还是整数型。 虽然这非常适合初学者,但它也引入了一大堆可能的错误。...但是当它成长时,最大的赢家将是那些早期采用它的人。 我并不是说,如果你现在接受 Julia,你肯定能在十年内赚一大笔钱。但是你在增加几率。 想想看:大多数程序员的简历上都有 Python。...因为老实说,是什么让你有别于其他任何一个 Python 程序员?没什么东西。但是即使三年后,也不会有那么多的 Julia 程序员。 有了 Julia 技能,你不仅表现出你对工作要求以外的兴趣。...它还没有完成,但现在是 1.0 版本的时候了——我们创造的语言叫做 Julia。它已经满足了我们 90% 不礼貌的要求,现在它需要别人不礼貌的要求来进一步塑造它。
语言大模型、ChatGPT 不可信,它们没有常识,会一本正经地给出错误的信息。所以,如果你要在公司里使用 ChatGPT 或类似的模型,你必须非常地小心。...我认为艺术创作的过程可以大致分为两部分,首先是对你想要创作什么有一个概念,然后是根据你的构想把它实际创造出来的相对机械的过程。...理论上讲,当你有足够多的 Fortran 程序并让它们产生足够多的突变,原则上是可能会产生比人类更聪明的 Fortran 程序的。只是这种原则上的可能并没有在实践中成真。...我觉得可能性不大,或许比进化 Fortran 程序多那么一点——但也说不好,或许 Fortran 程序才更有可能,因为有理由认为 Fortran 程序是一种比电路(circuits)表示能力更强的语言,...如果我只有 1000 万像素,我只能覆盖正弦函数的一部分,如果看我已经覆盖的区域,我似乎有一个很好的正弦函数模型。但实际上,我并没有真正理解正弦函数,我不知道函数的形状,也不知道它的数学性质。
直截了当地说,只要没有机器,程序设计就根本没有问题,当我们有一些弱的计算机时,程序设计变成一个温和的问题,而现在我们有了庞大的计算机,那么程序设计也变成为同样庞大的问题。...FORTRAN的悲剧是对它广泛的接受,在智力上把成千上万的程序员链接到我们过去的错误上。我每天都祈祷,更多的程序员同行能找到使他们自己从兼容性的罪恶中解放出来的方法。...如果你想要更有效的程序员,你将发现,他们不应该把时间浪费在调试上一他们不应当以引进错误开始。换句话说,两个目标指向同一个改变。...我想,可能可行。我将给出6个论点以支持这个观点。 对程序结构的研究已经揭示,程序——甚至对于同样任务的另一个选择的程序,以及对于相同的数学内容,在他们的智力可管理性方面可以有很大不同。...唯一有效的可显著提高对一个程序信任程度的方法是,对它的正确性给出令人信服的证明。但是人们不应该首先编写程序而后证明正确性,因为提供证明的要求将仅仅增加可怜的程序员的负担。
但如果你曾与这些人坐下来聊过天,你也会知道他们对 Python 的缺陷有多大怨言。速度缓慢,需要过多的测试,就算做过了测试也会冒出来运行时错误……让人头疼的事情实在太多了。...除了 Julia,目前只有 C、C++ 和 Fortran 是这个俱乐部的成员。 社区 历经 30 多年的发展,Python 已经建立起了一个庞大的支持社区。...库 这是 Python 的强项之一——它的库数量庞大且维护良好。Julia 没有那么多库可用,用户还抱怨说现有的那点库维护得也不够好。...这意味着程序将在运行时确定变量是浮点数还是整数。 尽管这对初学者来说非常友好,但它也引入了许多潜在的错误。...但随着它的发展,那些早日采用它的人们会成为最大的赢家。 我并不是说,如果你现在就选择 Julia,就一定可以在十年内赚到很多钱。但这样做的话,你是在为自己创造机遇。
与Perl 1 一样,LISP 的后代发生了重大变化,但它们仍是相似的语言。 这使得学习新的 LISP 语言并不难。因为它们彼此之间有很多共同点,你能够快速流畅地共享更大的开发者社区。...虽然这种语言十分小众,也并不存在多少 COBOL 程序员,但是它已经存在了几十年,基本上没有任何改变。为摆脱 COBOL,程序员经常将其翻译成另一种语言(基本上是 Java)实现。...如果你问 Fortran 用户:“你需要语言变得更容易编程吗?”他们会说:“我不在乎!”而 LISP 用户也不会把语言的具体功能放在首要位置。...有没有一种语言可以兼顾迭代速度与功能呢?这并非不可能。但它最终将不得不与迭代较快和较慢的后代竞争。 例如,Perl 就是如此。很久以前,Perl 是唯一的一种脚本语言。...自 1956 年美国计算机科学家约翰·巴克斯带领团队开发出世界上第一个高级编程语言 FORTRAN 开始,潘多拉魔盒就已被打开,也随之揭开了与计算机对话的神秘面纱。
NVIDIA 正在寻求扩展对更多编程语言的支持,因为它试图吸引更多开发者为其 GPU 编写应用程序。 该公司的 CUDA 编程框架 目前支持的语言包括 C++、Fortran 和 Python。...Larkin 没有提供有关正在考虑哪些编程语言的具体信息。 “我的团队肯定在监控这些语言,并试图寻找参与这些语言的机会。...但 [C++、Fortran 和 Python] 是我们产品中今天专门支持的语言。我知道一些技术,我无法在这里提及,这些技术也将进一步支持更多语言,”Larkin 说。...这是一个公共库。它提供了高级 API,你可以真正控制 Tensor Core 所做工作的更多方面,”Jones 说道。...“这个想法是获取你的 cuBLAS 核心,只使用一个 GEMM 核心在你的内核中激活它,就像你使用 CPU 中的 cuBLAS 所做的那样,”Jones 说道。
我一直认为 Fortran 与 BASIC 有点相似,所以每当我需要编写一个简短程序,来分析实验室数据或执行其他一些数值分析时,我都会很快想到 Fortran。...我在空闲时用 Fortran 编写了一个“猜数字”游戏,其中计算机会在 1 到 100 之间选择一个数字,并让我猜这个数字。程序会一直循环,直到我猜对了为止。...INT 函数将结果截断为整数;因此,变量 NUMBER 就是一个介于 1 到 100 之间的随机数。 程序会给出提示,然后进入一个循环。...这就是 READ 语句有一个行号的原因:你可以在循环末尾使用 GOTO 跳转到此标签。 穿孔卡片没有 (大于)符号,因此 Fortran 采用了另一种语法来进行值比较。...每次运行程序时,用户都需要输入不同的随机数种子。如果你总是输入相同的种子,程序给出的随机数也会一直不变。
领取专属 10元无门槛券
手把手带您无忧上云