汉扬编程 编程大纲 知乎神回复:英语对程序员有多重要?看看这个简单粗暴的回答

知乎神回复:英语对程序员有多重要?看看这个简单粗暴的回答

知乎神回复:英语对程序员有多重要?看看这个简单粗暴的回答

知乎神回复:英语对程序员有多重要?看看这个简单粗暴的回答

学编程需不需要英语?

不需要。

没有英语行不行?

不行,你还得看文档。

那英语要学到什么程度?

初中英语及格就行,剩下的就是词汇。这些词汇你背六级也没有用,因为这是计算机专用的词汇。

没有背怎么办?

看文档用bing,看多了你就记得了。

觉得好累啊不想学?

那就不要编程啊,世界上那么多工作。

我又不想付出又想赚钱?

那我帮不了你,长得帅去做牛郎(好像也不能不付出,但是至少不用背单词了),长得丑那就去撞墙吧,撞死了就不用赚钱了(逃

我觉得我英语读还行,就是写的时候记不住字母的顺序,怎么办?

用一个好的IDE,譬如说宇宙第一Visual Studio,或者第二的Visual Studio Code,到处都是提示,看着像就选,保证没有错!

知乎作者:vczh

链接::///question/334461516/answer/826724767

另外,C/C++就是一个既可以强化思维能力,又可以打好编程基础的编程语言,你想要做软件开发,成为核心程序员的话,学习C/C++的话笔者有一个C/C++的编程千人羣(Q艘索:C语言编程学习聚集地(无言建立))你如果感觉自学C/C++语言有困难的话,有兴趣学习或者了解一下C/C++编程的小伙伴就可以进来交流。

知乎千万浏览:你的编程能力从什么时候开始突飞猛进?

知乎推荐给我一个千万浏览的问题——你的编程能力从什么时候开始突飞猛进,勾起了我的回忆,顺手写了下面的内容。也许你也经历过这样的时刻,欢迎在留言区分享。◇◇◇

1、第一次编程能力突飞猛进,是在记住300多个函数之后。我是2005年初自学C语言,然后找到的第一份软件开发工作,开发Windows 98上的宽带接入客户端。

C语言里没有图形界面的东西,要做GUI应用,得调用Win32 API或者使用MFC,我是一概不懂,所以一开始就比较懵逼,不知道从何入手。后来在老司机指点下,买了Windows GUI编程的三大神作——《Windows程序设计》、《Windows核心编程》和《深入浅出MFC》。然后,白天在单位老司机指点下写代码,晚上回到租住的地方啃书,写测试程序。周末没事儿也都在啃书,写程序。

很快把这些书里与工作相关的内容都啃了两遍,但工作起来,还是有一个障碍——面对某个功能,想不到用什么模块什么函数去实现。

嘿嘿,这个是很多初学者都会碰到的鸿沟,浮光掠影学了不少东西,真动手时,想不到该用哪个。

怎么办呢,问同事。比如问“怎么创建一个窗口”,他会告诉我,“用CreateWindow”。再问,“这个函数怎么用?”他会告诉我,“去查MSDN”。

于是我就知道了还有MSDN这个玩意儿,下载下来,没事儿就找函数,看它的用途,记它的参数。

大概两个月后,我记住了几百个函数,什么CreateWindow,CreateWindowEx,BeginPaint,DispatchMessage、SetWindowLongPtr、RasDial、CoCreateInstance、timeSetEvent、DirectDrawCreate、CreateSurface……都深深地印在了脑海里。

于是,奇迹出现了:每当要实现一个什么功能,我就能直接想到用什么方法,然后一查MSDN,很快就搞定了。

再接下来,身边的老司机想不起来哪个功能对应哪个函数,也会问我,我可以迅速说出函数名字和参数以及返回值。

那段时间的感觉,特别棒,好像跨过了一道坎,一下子能轻松搞定工作了,一下子在团队里有了价值。

这也是这段经历,过去了十几年,我还印象这么深刻的原因。

这段经历也让我意识到:记忆API,理解API,建立API和应用场景之间关联词典,是学习一种新的开发技术的基本功。

所以后来再学到Qt、DirectShow、D3D、ffmpeg、WebRTC、Skia等技术时,我如法炮制,下一番笨功夫,然后很快就可以用起来。

◇◇◇

2、第二次编程能力突飞猛进,是在读完Qt源码之后。有一段时间用Qt写网络程序,用QTcpSocket从服务器接收数据,遇到一个问题——程序运行时经常出现内存溢出导致的崩溃。

查来查去,不知道怎么回事儿,分配内存和释放内存都是结对的,没有明显的内存泄漏,后来用valgrind启动程序检测,在一堆内存问题中,也没找到自己代码有内存泄漏。

没办法,就去读QTcpSocket和QAbstractSocket的源码,还读了封装起来的平台相关的网络实现,后来发现,socket里面有一个buffer,是会动态增长的,你不停的塞数据,它就不停的分配内存,永不停歇,直到溢出崩溃。

然后就顺着这个线索往应用层面回溯,发现Qt实际上提供了一个设置缓存大小的方法,调用了一下,问题果然就好了。

后来这个程序又遇到了性能问题(当时在128M内存的电视盒子上开发),还是读源码,找到了怎么减少内存拷贝次数的解决方案。

这次经历后,我就开始系统阅读Qt源码,把几个核心模块,Qt Core、Qt Network、Qt GUI、Qt多线程等,都通读了一遍。

读完之后就发现,哎哟,之前开发中遇到的各种疑难技术问题,都能手到擒来解决掉了。甚至我还基于那个128内存盒子厂家提供的图形API,写了一个桥接Qt和盒子显卡的驱动模块,让整个盒子的图形性能获得了大幅提升。

再后来,因为对Qt的系统理解,我就写了两本Qt开发的图书,《Qt on Android核心编程》和《Qt Quick核心编程》。

这段经历让我意识到,阅读开源框架的源码,理解开源框架的设计原理和实现细节,根据自己的应用场景定制、扩展框架,是从一个API Caller变身特定方向精通者的必经之路。

再后来,我在项目中引入开源类库,都会找时间去读它的源码,像ffmpeg、mplayer、vlc、WebRTC的源码,我都读过。

◇◇◇

这些都是陈年往事了,现在我已经转型,主要围绕职业规划做三件事——咨询、写作和课程。如果你在职业发展、职业转型或者Offer选择方面有困惑,可以来约我的一对一咨询。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6499.html

基于C++实现简易航空票务,飞机订票系统!

(c语言取反运算)C语言位逻辑运算符的四种逻辑:取反,并,或,异或

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部