It is better to have the ability of fast learning
来自某位大佬:
内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文
十足的自信心+强烈的求知欲+对Programming&&C&&CPP的执着+百折不挠的钻研精神+数据结构&算法基础+操作系统基础+C&CPP语法基础
恐惧,崇拜,诋毁都源于无知。
不要拒绝承担重担
承担多大的担子,就会有多大的价值。主席他老人家说过:人有多大胆,地有多大产。只有敢于承担重担的人,才可以委以重任。而且,更多的历练会锻炼你快速的成长,丰富的人生阅历将是一笔无比的财富。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为
开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即
计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA
One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,VB,PowerBuilder,Delphi,C++
Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少
能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种
数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的
数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要
深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学
习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系
统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最
早的客户/服务器结构,到今天的WEB
Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,
你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器COM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的
中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是
要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
程序人生成长发展中的一些感悟
1.要成长,有人带,很重要。
一个人能力与努力非常重要,但要更快地走向成功,少走弯路,就必须学会借助外界或他人的力量。即使给你足够的书和教程,给你足够的时间,也未必可以修炼成
才。需要环境,需要实践,更需要团队的沟通和相互学习,一个人不可能学会一切,即使可以也会需要很多年的时间,最终还不知道是否正确。正所谓,名人指教,
高人指点,不无道理,因为前人的经验教训是用多年的时间和精力换来的,而你得到这个道理,却只需瞬间,无形中减少了成长的成本。
想进步,有人带,这就是现实。孔子曰,三人行,必有吾师。
交换思想,会令你了解的更多;有人带,会使你成长的更快!
2.广结佛缘
知识面的狭窄会导致思路的狭窄,想法简单。做事情的时候处理问题的办法相对要少。对一个技术性的问题而言,如果做得项目多了,类型多了,相对来说遇到一个
问题,就会知道该用什么样子的方式解决最好,哪种途径最有效。而广义的讲,在社会上,你接触社会面广,人脉资源丰富,相应的做事的途径就会多,成功的机率
就会大,这是一个普通的不能再普通的道理了。所以,可以提醒一些同行的xdjm们,平时里不要只是低头写你的代码,多接触一些新的知识或技术,新事物会对
你设计系统提供思路或启发。多了解社会,多和人沟通,多培养一些人脉,多给自己一些机会,你会觉得这个世界很美好。
3.目标决定过程
先认清“正确的结果”,根据正确的结果去设计你的过程。你选择什么样的目标,就会有什么样的人生。当一个人具有明确目标,会对有助于实现目标的蛛丝马迹都
特别敏感,做事情相应也就会很有目的性,而不是稀里糊涂。
所以,就容易到达自己的目的。如果没有目标,就算是天上真有神仙,如果你不能明确地说明自己想要什么,神仙也不知道该给你什么。
4。技术和管理
作了这么多年的技术,有时候会发现一些所谓的技术不过就是一些控件或类库的使用(当然不是全部是),有时候我们所做的工作还不能算是真正的“创造”,充其
量是一种“制造”。也经常在论坛看到争论到底是技术重要还是管理重要,这其实体现了一部分朋友的迷茫,作过多年的程序员都会想向上发展,其实并没有错,做
技术没有出头之处,并不代表没有其他的潜力或优势。况且国内盛行“35是个坎”的言论。如果从一个人的职业规划和社会价值角度讲,人应该争取为社会创造更
大的价值。一段代码创造的价值远不如一个商业流程或商品设计创造的价值大,正如:盖楼的工人师傅和设计楼的设计师,没有谁重要不重要的问题。而是一种人生
价值观的问题。但前提是并不是所有的工人都可以成长为设计师的,要根据自己的实际情况和职业愿望所决定。
所以,对于一些有潜力,有志向这方面发展的朋友,而又想体现更大的自身价值和优势,可以尽早计划,制定目标,立即行动,希望能挖掘一下自己各方面的潜力。
我个人也希望能在项目管理或系分方面有所进步,但暂时我还不打算放弃写代码,因为创作源于生活,离开了生活创作便变得空洞,感觉没写过代码的人管理项目或
设计系统会变的有点像纸上谈兵,空中楼阁。
5.不要拒绝承担工作重担
承担多大的担子,就会有多大的价值。主席他老人家说过:人有多大胆,地有多大产。只有敢于承担重担的人,才可以委以重任。而且,更多的历练会锻炼你快速的成长,丰富的人生阅历将是一笔无比的财富。
来吧,让更多的工作来的更猛烈些吧!
6.用心做好现在的每一件事
1)你已经认为C++和汇编语言都是很简单的语言,并能够自如地运用;
2)你能够在30分钟之内想到正确的五子棋AI算法设计思路和方向;
3)你完全理解STL为什么这么重要;
4)你能够独立地解决所有的编译与链接问题,哪怕你从来没有遇到的问题,你也不需要询问任何人;
5)英文网站是你的首要信息来源;
6)能够读懂英语写成的国际标准,比如NTFS磁盘格式标准。
7)你经常站在集合论的角度思考算法问题;
8)能够理解一个简单的驱动程序,能够理解一个简单3D交互程序;
9)你能够认识到线性代数和概率论在实际编程工作中的极端重要性;
10)你完全理解COM的设计思想,尤其能够 理解COM为什么要设计成这样;
11)当我说到虚函数的重要作用时,你不会急着去找书来翻;
12)你能够说出C++为什么比其他语言优秀的理由
C++只是语言.真正灵魂是设计.和算法.
其实程序设计语言是一种工具,大家千万别陷进去。
C++只不过是一种语言,一种工具是用来显示你的编程思想,你对问题的理解能力
如果有一天,由于实际应用的体会领悟或者需要,你觉得C++的标准还有必要再补充一下或者修改一下,那么你就已经超越了C++这种语言本身的范畴,说精通C++也不为过了
没干过C,只针对C++:
1、要很熟悉C++的内存机制。只有了解了这个以后,其它的很多问题才能解决,比如,开一个缓存new时,要指定大小,为什么delete不需要。堆和栈有什么区别,分别在什么时候用比较合适。
2、要有程序运行的时间和空间效率意识,比如加载整个硬盘的文件,大概需要多少内存,10M?100M?1G?各自的处理方式有着本质的区别。缩略显示整个硬盘的图片,如果每次单击滚动条时,要等一分钟,你认为用户能接受吗?
3、要有很强搜索资料能力。比如在程序启动时,要自动发个Email,怎么做?要写个搜索程序,有哪些算法对大批量数据比较合适?
4、要熟悉一种通用库的使用,比如MFC,STL,不一定要很精通,知道照葫芦画瓢就行,要用的时候可以查手册。
5、熟悉一种工具的使用,比如Visual Studio;
6、熟悉动态库和静态库的使用。
什么叫精通C/C++
It is better to have the ability of fast learning
It is better to have the ability of fast learning的更多相关文章
- [DEEP LEARNING An MIT Press book in preparation]Deep Learning for AI
动人的DL我们有六个月的时间,积累了一定的经验,实验,也DL有了一些自己的想法和理解.曾经想扩大和加深DL相关方面的一些知识. 然后看到了一个MIT按有关的对出版物DL图书http://www.iro ...
- [转]Introduction to Learning to Trade with Reinforcement Learning
Introduction to Learning to Trade with Reinforcement Learning http://www.wildml.com/2018/02/introduc ...
- Brief History of Machine Learning
Brief History of Machine Learning My subjective ML timeline Since the initial standpoint of science, ...
- Introduction to Learning to Trade with Reinforcement Learning
http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/ The academic ...
- 机器学习简史brief history of machine learning
BRIEF HISTORY OF MACHINE LEARNING My subjective ML timeline (click for larger) Since the initial sta ...
- 网络流量预测 国内外研究现状【见评论】——传统的ARIMA、HMM模型,目前LSTM、GRU、CNN应用较多,貌似小波平滑预处理步骤非常关键
Time Series Anomaly Detection in Network Traffic: A Use Case for Deep Neural Networks from:https://j ...
- 深度学习Deep learning
In the last chapter we learned that deep neural networks are often much harder to train than shallow ...
- Machine Learning and Data Mining(机器学习与数据挖掘)
Problems[show] Classification Clustering Regression Anomaly detection Association rules Reinforcemen ...
- [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
About this Course This course will teach you the "magic" of getting deep learning to work ...
随机推荐
- Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)
标题 Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一) 技术 Spring Boot 2.Spring Security 5.JWT 运行环境 ...
- Consul 学习笔记-服务注册
Consul简介: Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面.这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格.Consul需要 ...
- 第2天 | 12天搞定Python,运行环境(超详细步骤)
倘若有人告诉你,他在学习Python编程,却没有安装运行环境,那你赶紧叫他滚,并离他远点,因为他在欺骗你的感情. 没有安装运行环境,程序根本无法跑起来,对错不能知根知底,试问是在学编程,还是在跟空气对 ...
- tmpwatch命令清除旧文件
我们知道系统里面常常会有一些忘记删除的长时间不用而且确实没有用处的文件,如果不去处理,这些无用的文件会越来越多,浪费许多系统资源.在不知道文件名的情况下,很难去检查某一目录下到底是哪些文件长时间没有被 ...
- JVM 第五篇:命令行 JVM 故障处理工具
本文内容过于硬核,建议有 Java 相关经验人士阅读. 1. 引言 虽然我们前面介绍了各种图形化 JVM 故障处理工具,但是很多情况下,我们在处理问题的时候并没有图形化的操作环境可以使用,这时候,就需 ...
- 关于keytool和jarsigner工具签名的使用小结
在我们日常Android应用开发中,我们都要对我们开发的apk做签名处理,或者加固,增强我们apk的安全性,防止被逆向反编译,在apk签名这块,我们一般采用JDK自动工具来签名,下面就对相关工具做个简 ...
- iOS使用NSTextAttachment添加图片,图片模糊
最近在忙的项目中,需要处理富文本的相关内容,产品需求并不复杂,所以想着用TextKit处理,顺便学习一下,没想到直接掉坑.在此记录一下(都是血泪史),顺便为有需要的小伙伴提供参考. // Add th ...
- 多路复用select和epoll的区别(转)
先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一 ...
- 【C语言C++编程入门】程序的可读性和函数的调用!
一个简单程序的结构 你已经看过一个具体的例子,下面可以了解一些 C程序的基本规则了. 程序由一个或多个函数组成,其中一定有一个名为 main()的函数.函数的描述由函数头和函数体组成.函数头包括预处理 ...
- MySQL:SELECT COUNT 小结
MySQL:SELECT COUNT 小结 背景 今天团队在做线下代码评审的时候,发现同学们在代码中出现了select count(1) . select count(*),和具体的select co ...