专业编程培训机构——完成蜕变以后轻松拿高薪
电话+V: 152079-09430 ,欢迎咨询编译器装在哪个盘比较好一点呢,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
一、怎样在ubuntu10.10中安装GCC-4.3.1编译器??
我安装了一次不怎么成功,后来我发现,也可以在xp下安装的!将ubuntu10.10安装到windows的一个分区内。在xp界面下放进盘,开始安装,选择与windows共存什么的还是在windows下安装什么的,我记不太清楚了、、那样安装时最好的!就像在xp里安装一个程序一样,开机启动时也有windows和ubuntu的!绝对好用,我安装了,不过后来因为要安装server2008系统并且我用的3G无线上网卡,没法联网又将它卸载了、、、改天再安装了、、、
二、GCC编译器是安装在Linux哪个文件夹下
输入whichgcc命令就知道了,GCC编译器安装好后Linux系统上会有一个gcc命令,通过查看gcc命令的可执行文件所在的路径,等于就是查看GCC编译器的安装目录。而查看某个命令的可执行文件在哪里的命令就是which命令,所以用whichgcc就可以知道GCC编译器的安装目录了。大语言模型能取代编译器吗?
CSDN2024-01-1519:00发布于湖南+关注随着GitHubCopilot等AI辅助编码越来越成熟,是否有可能取代现有的高级编程语言,直接生成像今天的编译器那样的可执行机器代码?本文进行了初步探讨与分享。本文经授权转载自宝玉老师的个人博客(微博@宝玉xp),链接https://baoyu.io/translations/software-engineering/why-bad-scientific-code-beats-code-following-best-practices作者|MikeLoukides译者|baoyu.io
出品|CSDN(ID:CSDNnews)首先回答标题的问题:别抱太高期望。我和KevlinHenney(一位软件开发顾问)最近讨论了一个问题:将来的自动代码生成工具,比如升级版的GitHubCopilot,是否有可能取代现有的高级编程语言。我们具体想知道的是,ChatGPTN(N很大)是否能跳过用高级语言编写代码的步骤,直接生成像今天的编译器那样的可执行机器代码?这个问题并不仅仅是理论上的。随着编程助手越来越精准,它们很可能不再仅仅是助手,而是开始承担起编写代码的重任。这对程序员来说将是一场革命,尽管编程只是他们工作的一小部分。现在,类似的情况已经开始出现了:比如ChatGPT4能够在Python中自动生成代码,还能在一个沙盒环境中运行代码,收集错误信息,并尝试调试。谷歌的Bard也有类似功能。虽然Python是一种解释型语言,不产生机器代码,但这种自动生成和测试代码的过程完全可以应用到C或C++这样的编译型语言上。这种变化其实并不新鲜:在计算机的早期,程序员是通过插拔电线和输入二进制数字来“编写”程序的,后来才使用汇编语言和(在20世纪50年代末)如COBOL(1959年)和FORTRAN(1957年)这样的早期编程语言。对于那些习惯用电路图和开关编程的人来说,这些早期的编程语言简直是革命性的。COBOL甚至被设计成像写英语那样简单。Kevlin强调,高级语言是一种我们暂时还无法替代的“决定性知识库”。虽然这个词听起来有点怪异,但它的重要性不容小觑。在编程的历史上,总有一些这样的知识库存在。以前,当程序员使用汇编语言时,他们需要直接查看二进制代码,以了解计算机的具体操作。而在使用FORTRAN或C语言时,这种知识库就提升到了更高层次:源代码表达了程序员的意图,而编译器负责将其转化为正确的机器指令。不过,这种知识库的地位一直不太稳定。早期的编译器并不总是可靠的,尤其是在优化代码时更是如此(难道说优化编译器是AI的前身?)。而且,代码的可移植性也是个大问题:每个硬件制造商都有自己独特的编译器,带有各自的特性和扩展。在面对程序运行失败的问题时,汇编语言常常是最后的求助手段。这种决定性知识库的有效性通常局限于特定的供应商、计算机和操作系统。为了使高级语言在不同的计算平台上都表现出一致的行为,推动了语言标准和规范的发展。如今,掌握汇编语言(assembler)的人已经寥寥无几。你只在编写设备驱动程序(devicedrivers)或与操作系统内核(operatingsystemkernel)的某些复杂部分打交道时才需要它。尽管编程方式已经发生了变化,但编程的结构依旧没变。特别是在使用ChatGPT和Bard这样的工具时,我们仍然需要一个确定性的知识源,但这个源头已经不再是汇编语言了。无论是使用C语言还是Python,你都可以通过阅读代码来准确理解程序的功能。如果程序表现出意外的行为,这很可能是因为你对语言规范的某个细节理解有误,而不是编译器或解释器的问题。这一点至关重要,因为它是我们能够成功调试程序的基础。源代码以一种合理的抽象层次告诉我们计算机在做什么。如果程序未按预期运行,我们可以分析并修改代码。这可能需要你重新研读Kernighan和Ritchie的著作,但这是一个已被广泛理解并可控的问题。现在,我们不必再深入研究机器语言了——这实在是件好事,因为随着指令重排序(instructionreordering)、推测执行(speculativeexecution)和长管线(longpipelines)的出现,理解机器级别的程序比20世纪60、70年代要复杂得多。我们需要这种抽象层。但这个抽象层也必须是确定性的,即完全可预测和每次编译运行时行为一致。那么,为什么抽象层必须是确定性的呢?因为我们需要确切知道软件的具体功能。无论是AI还是其他计算任务,它们都依赖于计算机能够可靠且反复地执行操作,无论是百万次、十亿次还是万亿次。如果你不确定软件会做什么,或者每次编译时它的行为都可能不同,那么你就无法以此为基础来构建业务。更不用说维护、扩展或增加新功能了,如果每次接触它都会改变,你也无法对其进行有效的调试。自动化代码生成尚未达到我们对传统编程所期望的可靠性水平。SimonWillison将这称为“基于感觉的开发”(vibes-baseddevelopment)。目前,我们还是依靠人工来测试和修正代码中的错误。更重要的是,在开发过程中,你可能需要多次生成代码才能找到解决方案;你不太可能仅凭第一次的提示结果就直接进入调试阶段,就像你不可能一次就用Python写出一个完美的复杂程序一样。为一个重要的软件系统编写提示是一项挑战,这些提示往往非常长,需要多次尝试才能得到正确的结果。使用当前的模型,每次生成代码,你都可能得到不同的结果。Bard甚至提供了几种不同的选择。这个过程并不可重复。如果每次生成和测试的程序都不一样,你怎么理解程序在做什么?如果下一个版本的程序可能与前一个完全不同,你如何判断自己是否在向着解决方案前进?我们可能会认为,通过将GPT-4的“温度”设置为0,可以控制其回应的变化;这里的“温度”指的是回应之间的变化度(或创新性、不可预测性)。但事实并非如此简单。温度调节只在一定范围内有效,其一限制是提示必须保持一致。如果改变提示以帮助AI生成正确或设计精良的代码,就超出了这个范围。另一个限制是模型本身不能更改——但实际上,模型一直在变化,且这些变化超出了程序员的控制范围。所有模