1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
3 条评论
我没办法给你最好的答案,不过可以给你一个外国有人的回答
TL;DR: It depends, but if you have no idea what you want to do you should either do whatever your CS degree requires you to do or focus on a high-level, general purpose language. I’d say use C# because the most common development environment for C# provides a lot of helpful support for beginning devs, but others will point you to Java (a plausible option, although probably not where you should stay) or C/C++ (if they like suffering or place a high value on the mostly pointless CS trivia like big O).
The language you should pick is almost entirely dependent on what you want to do. For example if you want to work on the team I’m currently working on, which does a fair bit of business automation using scripts that run on Linux boxes, you have to learn and use Perl because that’s what most of the code they use is written in.
For the languages in your list, check the following descriptions and decide which case best applies to what you’re trying to do. Keep in mind that old code is kept around as long as anyone knows of the code and finds it useful, so it takes a very long time for a language to die off once it’s achieved broad popularity with at least a couple percent of developers.
COBOL: Included because it will be referenced in Java’s description. It is a zombie language. It was the language for business development a couple decades ago, and it still runs in a truly remarkable number of places, especially when you realize that COBOL developers have been trying to kill it off for decades because they want to retire and can’t find anyone prepared to take on the on-going maintenance.
Java: Probably the most widely used language in business today. It is basically in the same place COBOL was at twenty or thirty years ago. That is, you can do pretty much anything your business wants you to do in Java either directly in the language or using one of the many third party libraries and tools. It can also be run pretty much anywhere your business will want to run its software. It is also slow to incorporate new learning to make the language easier to use, and many of the companies that use it are even slower to incorporate changes than the language itself. It could easily be following the COBOLs path, but as long as you’re cool with slowly becoming obsolete you could have a reasonably long career as a Java developer as long as you get into it fairly quickly. If you learn Java, you would be well advised, however, to quickly pivot to another language that runs on the JVM (Kotlin, Scala, Haskell, etc.) after you’ve mastered the basics.
JavaScript: One member of the triad of languages (loosely speaking. The other two languages, HTML and CSS, are mark-up languages not programming languages.) that you pretty much must know to be credible as a web developer. It isn’t an especially pleasant language to work in, but the tooling has been improving for years now so that it’s almost caught up to the backend languages of a decade or two ago. There are alternatives on the web that will be mentioned below, but they’ve got a lot less mindshare at this point than JavaScript.
PHP: An alternative for working on the web. It used to be much more popular, but it’s evolution was much more evolutionary (driven by what PHP devs where complaining about at the time) than planned with an eye for language coherence. PHP is the underlying scripting language for WordPress, and is probably used a fair bit in other places. It isn’t regarded as an innovative language, but it can certainly get things done for websites.
C#: Like Java, but is less widely used, has a somewhat less rich ecosystem of third-party libraries and tools (compared to Java; mostly because it’s less widely used), and is more open to learning from the on-going evolution of software development. It’s developed by Microsoft, which results in a fair bit of irrational hatred, and used to be much more restricted to running on Windows (again, it’s a Microsoft product). It is still one of the best languages to use when developing software that will run on one version of Windows or another. It’s easy to use for web and back-end development, and has been expanding to a greater and greater array of platforms more recently. In the form of Mono, it can run on even more platforms than Java including gaming consoles. It’s a solid choice for just about anything you’ll want to do as a developer (as long as your goal isn’t running on the JVM), but it’s often the second or third best option when you’re not planning on running it on Windows. Keep in mind that folks are actively working on making it better in more places, so even if you don’t want to use it now it’s worth keeping an eye on.
C: The lowest level language on the list, you should actively avoid it unless your goal is to work on the Linux kernel or in environments that are severely memory constrained. In order to write good C code you need to spend quite a bit of time thinking about how the underlying hardware is actually going to run your code, which most humans are bad at doing. It’s also a top language to use if you’re more interested in getting in pissing contests about who’s a better developer since it’s most useful for working at the limits of software development, where very little development actually takes place.
C++: It’s a super-set of C that adds a bunch of helpful bits and pieces like proper strings and more reliable ways of handling arbitrary user input. If you want to work in environments that require very high performance, like OS development, database system development, or working in embedded systems, C++ is probably a better choice than C, but you should double check how many C++ features you actually want before you start doing a bunch of development. Also good for pissing contests about who’s a better software developer for the same reason as C.
SQL: Used for interacting with most, if not all, relational databases. You will need to know the basics if you work in a business setting, since there are almost always databases involved in business development. You may be able to avoid it if you work on OSes and/or embedded systems, but only as long as they’re not writing anything to a database.
Python: Right now this is probably the premier language for analysts of all sorts. It’s a very effective scripting language with lots of libraries and add-ons for pretty much any analysis you want to run. It can be used in a software development environment, but the idiomatic ways of doing Python development are somewhat unfriendly for working as teams of developers. However, if you want to be a data scientist, data analyst, business analyst, or sys-admin and not a software developer or engineer, Python is a great way to go and is a great career path as Machine Learning and AI have been really heating up recently. It is also probably a better scripting language than Perl and/or the various shells available on Linux. It’s primary competitors are Perl or Ruby on the scripting side or R on the data analysis side.
嗯嗯,感谢