程序员

首页 » 常识 » 问答 » 为什么新手会觉得基于console的应用
TUhjnbcbe - 2024/2/18 18:20:00

有新手程序员在知乎上说自己现在写的代码都是在黑乎乎的命令上跑的,而自己想写带GUI的程序,又不想通过VB/VC等拖拽几个控件了事,所以感觉不得其门而入。

我来尝试稍微用通俗点的语言来回答这个问题吧。本来看这个问题不是很热,其实一开始我是不怎么想回答的,但看描述的话,依稀看到我们以前读书时的影子。隐隐约约觉得我们老一辈的程序员要有个责任感,既然看到了,就应该尝试给出我们的看法,看是否能帮助到后辈。

首先,我们要清楚为什么你高中时用c写出来的程序都是黑乎乎的命令行窗口,那是因为我们没有使用图形库,里面输出的都是通过printf等直接打印到console的一些字串。

Onceuponeatime,计算机功能并不是很强大,那个时候计算机其实就真的是计算机,计算用的。那时别说图形库,在Windows出来之前,操作系统提供的图形相关的api都罕见(去mac那边找下应该能找到),我不知道现在的学生是否还有听过Dos这东西了。你可以理解成现在你在烧烤档看到老板在买单时手上拿着的那个不时的呼唤出“归零,归零,21加30,加...”那个计算器。上面的那个小屏幕是不是就很像上面说的console。

其次,我们要清楚这个黑乎乎的命令行其实并没有那么不堪,在上面你也可以做很多事情。ncurse你去了解下,去写个漂亮的小游戏不在话下,更别说一些工控机房上的操作软件系统了。

以上说这么多的目的就是让刚开始进入程序员大门的我们不要从心底里鄙视这种console应用,以为要有五彩缤纷的GUI的才显得牛X。啥叫牛X,你看人家Linus写的Linux原本就是个没有图形桌面的内核,现在风靡全球,这才叫牛X。且我们都知道GNU/Linux的桌面打不过Windows和macOS,但我们有弃用Linux吗?没有,安卓还是基于Linux的呢。

这里恐防大家对Linux历史不了解,稍微多说两句,Linux只是内核,没有桌面图形界面的,图形界面和各种发行版Linux如Redhat、Ubuntu等的出现多亏了GNU项目,所以我们常说的Linux其实真正的名称应该叫做GNU/Linux。

然后,你说的VB中拖拽几个控件然后做出带GUI的应用,我们先要明白VB,VisualStudio,Delphi,BorlandCPPBuilder这种叫做IDE,即集成开发环境。它们扮演着一个什么样的角色呢?这样子说吧,如果没有这个玩意儿的话,你所有事情都需要通过命令行或者txt之类的文本编辑器来做,比如不会有美观的代码高亮功能(vim等除外,我觉得可以算是半IDE),不会有快速代码跳转功能,不会有一键帮你去构建功能,你需要自己去写makefile,更不会有你说的拖拽两下就能预览GUI呈现的功能。

而你问题描述上说的想不用这种拖拽控件方式,而是自己手动写。其实这里完全没有问题,因为这里IDE做的事情其实就是帮你把怎么创建一个控件,然后怎么设置外观等自动化起来,你去找下你的项目代码,其实最终都是通过代码的形式来做的。况且这些控件很多都支持代码创建的,你只要去看下你用到的图形库的API文档,比如里面的怎么通过代码在VB中穿件一个Button,相信自己捣鼓几下就出来了,没什么难的。

这些图形库最终用到的接口都是操作系统暴露出来的系统API,如果你想更进一层的,你可以去看下这些图形库的源码,看下人家是怎么通过调用系统的API把各个控件封装的如此简单漂亮易用的,那样你就更牛X了。

比如你可以看下侯捷的《深入浅出MFC》,这应该是微软MFC经久不衰的名著了。

这里想起我们以前刚进大学的时候,教我们C++的教授强行推荐我们用BorlandC++Builder,说这才是C++IDE的未来。殊不知出来社会后没多久,Borland就没落了,现在BCB早已不见踪影,据说被另外一家公司收购了,具体情况好多年没有去了解了。

只是那时听了教授的,还买了本《InsideVCL》来研究,当时研究的也是不亦乐乎的,书籍我这里都还有,我就以知乎这个问题为背景拍个照给大家看下吧。注:这里的VCL和上面的MFC是在同一个生态位的玩意儿,都是个图形库,只是MFC是微软搞的,而VCL是Borland倡导的。

好了,先说这么多吧。也不知道大家是否喜欢听一个老程序员在这唠叨了,不过我是真心希望自己的一些经验可以给后辈一些启发或者说小小的帮助吧。

最后感谢大家的时间观看吧,喜欢的点个赞

1
查看完整版本: 为什么新手会觉得基于console的应用