我不确定这是否可能,但是我看了一些带有编程示例的视频,其中似乎是在某种命令提示符下而不是在漂亮的图形化IDE中编写程序。我只是对这些视频中可能发生的事情感到好奇。是否可以在没有IDE的情况下编写程序?
这是两个示例:http : //www.youtube.com/watch?v= hFSY9cWjO8o (@ 6分钟) http://www.youtube.com/watch?v=tKTZoB2Vjuk(@ 5分钟)
谁能解释这是怎么做的?
谢谢大家的宝贵意见!
我不确定这是否可能,但是我看了一些带有编程示例的视频,其中似乎是在某种命令提示符下而不是在漂亮的图形化IDE中编写程序。我只是对这些视频中可能发生的事情感到好奇。是否可以在没有IDE的情况下编写程序?
这是两个示例:http : //www.youtube.com/watch?v= hFSY9cWjO8o (@ 6分钟) http://www.youtube.com/watch?v=tKTZoB2Vjuk(@ 5分钟)
谁能解释这是怎么做的?
谢谢大家的宝贵意见!
Answers:
编写程序所需的只是一个文本编辑器和一个编译器(如果您使用的是非编译语言,则可以使用解释器)。代码通常只是纯文本。确实,您可以使用Windows记事本和命令行C编译器编写任何可以想象的程序。
许多程序员甚至不使用IDE。在我最终改用Eclipse之前,我个人使用Gedit(带有语法突出显示功能的基本Linux文本编辑器)的时间最长。
实际上,当我想编写一个简单的程序时,我仍然使用Gedit。有时候,如果我想快速编写脚本,甚至会只使用nano,因为我太耐心了,无法等待IDE加载。
@Matt,它比看起来简单。让我们看第二段视频:他们正在编写一个python程序。Python是一种解释性语言-意味着用python编写的程序不需要编译,只需解释即可运行。
如果您有一个简单的编辑器,例如记事本(windows)或nano(linux),则可以编写一个简单的文本文件,命名为"program.py"
,然后从命令行运行解释的文件,如下所示:
python program.py
例如,如果要在Lua中编程,则可以编写一个"program.lua"
使用记事本或nano命名的简单文本文件,并在文本文件上写一行,如下所示:
print("my first program in lua")
然后转到命令提示符(在Windows上为cmd,在Linux中为终端)并运行命令:
lua program.lua
关键概念:
希望能有所帮助。
耶稣,我现在觉得年纪大了,我什至不必打扰打孔卡或批处理。地狱,我在大学生涯中只需要使用一两次硬拷贝终端。
这就是我们在白垩纪晚期(大约1986年)所做的事情。我正在通过VT220基于琥珀色字符的终端处理VAX / VMS,该终端可以80x24或132x24的分辨率显示。
首先,启动文本编辑器:
$ EDIT/EDT HELLO.C
EDT与VMS等效,相当于DOS edlin和Notepad之间的功能。您输入了程序文本
#include <stdio.h>
int main(void)
{
printf("Hello, Stupid\n");
return 0;
}
将其保存到文件中,然后退出编辑器。
然后,您通过编译器运行代码:
$ CC HELLO
这样就翻译了HELLO.C中的源代码,并生成了目标文件HELLO.OBJ。目标文件包含该程序的机器代码,但尚未采用可执行形式。一方面,该printf
调用的实际二进制代码不存在。只有一个占位符。您仍然必须通过链接器运行目标文件,该链接器结合了标准库(以及您需要的任何其他库)中的二进制代码并对文件进行了格式化,以便可以将其识别为可执行文件:
$ LINK HELLO
此步骤的结果是文件HELLO.EXE,它是程序的可执行版本。
在任何现代系统上,该过程几乎都是相同的。只是特定的工具链不同。例如,典型Linux系统上的命令序列为
$ vi hello.c
$ gcc -o hello hello.c
要么
$ vi hello.c
$ gcc -c hello.c
$ ld -o hello hello.o -lc
自从我在这种环境中长大以来,我从不了解有人如何只需要 IDE来编写他们的代码。但是,从今年年初开始我就开始使用Java,尽管Eclipse有很多缺点,但我可以理解有人如何严重依赖IDE来完成工作。由于Java与C相比具有如此巨大的语言,并且由于我仍在尝试降低语法的精髓,因此它有助于拥有一个智能的开发环境,该环境知道特定类型所包含的程序包并帮助我组织导入。
编辑?我不需要臭气熏天的编辑器或IDE来编写代码:
cat << EOF > hello.c
/* This IS an example of writing code from the command line */
#include <stdio.h>
int main(void)
{
puts("Hello, World!");
return 0;
}
EOF
但是,以后有一些东西可以编辑文件很好。IDE(集成开发环境)的存在时间比许多人的答案要长得多。我唯一真正喜欢的IDE是Turbo C附带的一个,它在DOS上运行。对于那些被迫与埃德林混为一谈的人来说,这就像氧气。
我曾尝试过许多不同的IDE“套件”,这些都是来自朋友的推荐,他们不停地狂热地节省了多少时间,使一切变得多么方便。每次我坐下来尝试使用它时,我发现与它战斗比使用它更多。
在大多数情况下,我只使用最简单的文本编辑器。我最喜欢的是KDE,它是KDE附带的。这些是我喜欢的功能:
仅凭这些基本功能,我感觉自己快被宠坏了。
使用功能丰富的IDE时,我的工作效率实际上降低了,而且很庆幸的是,我从未开发过对它的依赖。
那当然是。在第一个视频中,它是关于C编程的。要编写C程序,您需要满足以下条件:
严格来说,您不需要文件,但是我不知道任何不使用C / C ++文件的环境。这样,您需要一个编辑器来编辑源代码。尽管可以使用记事本这样简单的方法来工作,但您确实希望做一些更复杂的事情来进行编码(突出显示代码,同时打开多个文件等)。
第二点,您需要一个编译器(源代码->目标代码)和一个链接器(目标代码合并在一起+启动程序所需的最少支持)。
即使使用IDE,大多数在后台完成的任务也可能是通过命令行完成的:例如,在Visual Studio中,IDE仍会使用文件,并在命令行为您调用编译器,但是它可以通过其他方式工作(并可能进行更多集成)。
那么为什么不使用IDE?有些人对他们的代码编辑器非常熟悉,因为他们真的很了解。例如,我对vi代码编辑器的工作效率很高。如果您需要与IDE无关的东西进行交互,则IDE也受到限制。这里需要权衡取舍,这取决于程序员的能力,项目,编程语言/工具等。某些语言甚至没有像样的IDE,而另一些语言几乎没有一种就无法使用。尽管我自己不使用IDE,但我认为它们非常有用的一个领域是调试C和C ++的集成。
printf '#include <stdio.h>\nint main() { printf("Hello, World\\n"); return 0; }' | tcc -run -
您当然可以在没有图形IDE的情况下编写程序。对于编译语言(例如C或C ++),该过程将如下所示:
对于PHP或Python之类的解释型语言,您可以在首选的文本编辑器(或诸如Python附带的交互式shell)中编写代码,然后由解释型程序执行代码。例如,要调用Python脚本,您可以运行python.exe myScript.py
。
Python不是纯解释性语言,因为它确实会首先编译,但是该编译形式是由Python解释器运行的,因此它仍然符合定义。其他语言(例如PHP)可以完全解释。
是的,您可以在没有编译器和IDE的情况下编写代码。它只是在写。文本。
我认为您指的是集成开发环境(IDE)。它们提供代码提示和语法突出显示等功能。编译器只是获取文件并将其编译为机器代码或字节代码。IDE通常通过向编译器发送命令来编译文件来使用编译器。
无需编译器就可以编写。这些语言使用“解释器”并在运行时处理脚本。
IDE的全部工作就是在一个方便的位置提供几个工具,然后使某些过程自动化。这些工具通常是...
要编写源代码,您可以使用任何可产生纯文本的文本编辑器,例如。NotePad,Word或专用代码文本编辑器。
将源文件保存在文本文件中之后,您可以通过传递测试文件的命令行来启动编译器,例如cc my_program.c。这将生成一个可以执行的目标文件。
要调试程序,请通过传递程序的命令行启动调试器,例如。gdb my_program然后,您可以设置断点,逐步执行程序,检查内容等。
使用IDE,所有这些操作都是通过在幕后按下按钮来完成的,并且IDE在其所有内容上都放置了精美的UI。
PS。真正的程序员使用命令行
自1950年代以来一直使用数字存储程序计算机,而图形用户界面实际上仅在1960年代后期才出现(对于1980年代的最终用户而言)。在此之前,人们不得不以某种方式使用和编程计算机。
尽管其中包含一些不准确之处(并非每个平台的用户界面都位于命令行系统之上),但您应该阅读Neal Stephenson的短篇小说《 Beginning Was the Command Line》。
它将使您真正想到计算机上的工作原理,以及在没有IDE的情况下如何“可能”进行编程,通过命令行完成实际工作,等等。
您实际上只需要一个文本编辑器(地狱,记事本就可以)和一个编译器/解释器(更重要的事情)。
您说过如何通过命令行执行此操作?狗屎听起来很疯狂,但很有可能。我的意思是,仅使用Windows内置的命令提示符,您就可以通过写入文件,echo "some codez" > target_file.sauce
但是您必须
A)善于做自己的事
B)编写一个简单的程序
C)疯狂击球
您确实需要认为IDE只是编辑器+编译器+(某种程度上)Makefile +调试器(有时)+图形UI构建器(有时),因此您当然可以选择完全不使用IDE,然后替换它们带有您选择的编辑器(vim,emacs,gedit,notepad ++,[insert_others_here]),编译器(用于Java,gcc,平台SDK的jdk或用于C ++的[insert_Cpp_toolchain_here]),Python解释器或您的语言所拥有的任何工具链),某种makefile(例如autoh ...工具,cmake,ant,maven等),某种调试器(通常包含在编译器中),以及是否需要图形用户界面生成器(想到的是glade) ,您可以在没有IDE的情况下拥有自己的IDE。哪种方法最好取决于您(我认为今天的IDE有点被高估了)
眨眼
他正在使用pico(纳米克隆)。我偶尔使用它。通常我使用emacs,它的用处不大,但功能更多。
根据经验,我不使用IDE。有时,我会去调试它们,或者因为很难找到命令行工具链(看着Xilinx)。在做GUI的极少数情况下,我还使用它们来绘制C#。但是从我的经验来看,IDE并不是一个很好的编辑器:僵硬,奇怪的字符和弦,不易使用,不支持多种语言,占用太多内存。
我宁愿使用emacs。
您应该研究计算的历史。它写的相当容易,将为您提供有关我们工作的绝佳视角。
您甚至不需要文本编辑器。:) :)
如果您在Windows中,请尝试以下操作:
more > hello.c
#include <stdio.h>
main()
{
printf ("Hello World!\n");
}
Ctrl-C
如果您在UNIX中
cat > hello.c <<.
#include <stdio.h>
main()
{
printf ("Hello World!\n");
}
.
然后,使用您最喜欢的命令行编译器进行编译。:)
显然,您必须在第一时间正确地编写它。
请记住,真正的程序员使用蝴蝶:http : //xkcd.com/378/
有趣的是:哈佛扩展学院正在教授没有IDE的编程方法...除非telnet + pico是IDE的意思。
最简单的方法是使用基本的文本编辑器编写Java程序,然后使用FTP程序将文件传输到FAS系统,通过telnet连接,然后在FAS上编译并运行它们(fas.harvard.edu-Java已安装那里)。他们必须使用FAS才能提交作业。要使用此方法,您可能需要了解有关Unix文本编辑器之一的足够知识,以便能够对文件进行任何所需的快速更正,或者计划在本地更新文件并重新传输它。有关传输文件的更多信息,请参见“常见问题”页面。
请勿使用文字处理器,例如Word或WordPerfect!它们添加了许多您看不到的格式化字符,但是这将阻止您的程序进行编译。在Windows上,您可以使用记事本或写字板,并确保将文件另存为扩展名为.java的“文本文档”。如果系统尝试添加“ .txt”后缀,请在“保存”框中在文件名和扩展名两边加上引号,以防止出现这种情况。您也可以在“有用的下载”部分中尝试使用任何一种编辑器(强烈建议在PC上使用的一种是Programmers File Editor)。在Mac上,使用BBEdit Lite(也在“资源”页面上链接),或使用“终端”窗口中可用的内置Unix编辑器之一。您可以获取一个安全的telnet程序,或者使用已有的telnet程序进入FAS系统,并在系统上编写和编辑程序。您可以尝试三种Unix编辑器:pico,emacs和vi。一旦编写了程序并将其保存,则如上所述,您可以在FAS上编译并运行它
http://www.fas.harvard.edu/~libe50a/homework.html http://www.fas.harvard.edu/~libe50a/faq.html http://www.fas.harvard.edu/~libe50a /java.html
如果您问我,他们在折磨孩子,但这没关系。在任何一年中,哈佛都不能接受更多的斯巴达人,更不用说Mothakes,Perioikoi和Helot了。
对的,这是可能的。我想像记事本之类的东西是没有IDE的,但是emacs和Textpad(我都用于C,Java课程)都被认为是IDE。现在...在VS2010中用WinForms和所有其他语言在VS2010中用C#编码后,我不想回到工作中的文本编辑器了-我会因为不做废话而大喊大叫。
但是,对于学术项目,当示例很小时,不使用IDE是有意义的。请记住:在入门编程类中,不存在许多实际问题。您可能不必将.xml文件作为资源添加到dll。您可能不需要太多调试,也不需要使用代码协定,也不需要从不受管理的C ++到C ++ / ClI,再到C#,然后再返回。学术任务不必太杂乱,因为它们可以从头开始,并以人日/周为单位进行衡量。所有文件都可以只是一个项目的一部分(甚至对于编译器或OS类而言)。像Visual Studio这样的IDE实际上会在简单的makefile起作用时阻碍您。想一想必须配置的无数选项。与Eclipse相同-它是一种可无限定制的过度设计的编辑器。您只需要一个简单的makefile和两个简单的C文件。实际上,当您自己指定每个标志时,您倾向于以这种方式进行更多控制。我曾经在大学实验室里这样编码过。这很有趣,但是其中一台“嵌入式”(意味着它必须非常小,可以装在飞机上)计算机没有GUI,也没有鼠标:)我仍然能够登录,编辑,编译和调试C程序,以及添加驱动程序并重新编译内核。
我使用99美分的笔记本电脑和可靠的Pilot Gel Pen编写程序。
我只是将它们重新输入到Visual Studio中。
编写程序和编码是两件事(对我而言)。
正如预期的那样,所有答案都说相同的事情:“当然可以!它只是文本!文本文本是文本文本!” 通常来说,这是对的,并且是对您问题的最佳答案。大多数IDE只是操纵文本。
但这并不总是正确的,在某些情况下,脱离纯文本模型会带来很大的进步。这些进步通常被纯文本的纯粹主义者所拒绝(这是大多数人,因为它也应该是如何...不是巧合吗?!)。IBM Visual Age是一个非常酷的例子,它死得很惨。
想到的另一个例子非常流行,它是用于创建Mac和iOS产品的Interface Builder。它的输出不是文本程序,而是序列化的对象,因此如果不使用IB或编写自己的IB,就无法创建NIB。
纯粹主义者会说:“是的,但是Interface Builder是用文本代码编写的!” 所以?
我坚信,如果我们能够超越纯文本范式,CS作为一个领域将会大大进步。除此之外,我认为我们最终会朝这个方向发展,但这将需要数十年的时间。首先,我们必须找出哪个更好,vi
或者emacs
....