1.2 Learning C++ [notes.learn]
来源:互联网 发布:sql create 字段唯一 编辑:程序博客网 时间:2024/06/05 01:05
1.2 Learning C++ [notes.learn]
The most important thing to do when learning C++ is to focus on concepts and not get lost in
languagetechnical details. The purpose of learning a programming language is to become a better
programmer; that is, to become more effective at designing and implementing new systems and at
maintaining old ones. For this, an appreciation of programming and design techniques is far more
important than an understanding of details; that understanding comes with time and practice.
C++ supports a variety of programming styles. All are based on strong static type checking, and
most aim at achieving a high level of abstraction and a direct representation of the programmer’s
ideas. Each style can achieve its aims effectively while maintaining run-time and space efficiency.
A programmer coming from a different language (say C, Fortran, Smalltalk, Lisp, ML, Ada, Eiffel,
Pascal, or Modula2) should realize that to gain the benefits of C++, they must spend time learning
and internalizing programming styles and techniques suitable to C++. The same applies to programmers used to an earlier and less expressive version of C++.
Thoughtlessly applying techniques effective in one language to another typically leads to awkward,
poorly performing, and hardtomaintain code. Such code is also most frustrating to write
because every line of code and every compiler error message reminds the programmer that the language used differs from ‘‘the old language.’’ You can write in the style of Fortran, C, Smalltalk,
etc., in any language, but doing so is neither pleasant nor economical in a language with a different
philosophy. Every language can be a fertile source of ideas of how to write C++ programs.
However, ideas must be transformed into something that fits with the general structure and type
system of C++ in order to be effective in the different context. Over the basic type system of a language, only Pyrrhic victories are possible.
C++ supports a gradual approach to learning. How you approach learning a new programming
language depends on what you already know and what you aim to learn. There is no one approach
that suits everyone. My assumption is that you are learning C++ to become a better programmer
and designer. That is, I assume that your purpose in learning C++ is not simply to learn a new syntax
for doing things the way you used to, but to learn new and better ways of building systems.
This has to be done gradually because acquiring any significant new skill takes time and requires
practice. Consider how long it would take to learn a new natural language well or to learn to play a
new musical instrument well. Becoming a better system designer is easier and faster, but not as
much easier and faster as most people would like it to be.
It follows that you will be using C++ – often for building real systems – before understanding
every language feature and technique. By supporting several programming paradigms (Chapter 2),
C++ supports productive programming at several levels of expertise. Each new style of programming
adds another tool to your toolbox, but each is effective on its own and each adds to your
effectiveness as a programmer. C++ is organized so that you can learn its concepts in a roughly linear
order and gain practical benefits along the way. This is important because it allows you to gain
benefits roughly in proportion to the effort expended.
In the continuing debate on whether one needs to learn C before C++, I am firmly convinced
that it is best to go directly to C++. C++ is safer, more expressive, and reduces the need to focus on
lowlevel techniques. It is easier for you to learn the trickier parts of C that are needed to compensate
for its lack of higherlevel facilities after you have been exposed to the common subset of C
and C++ and to some of the higherlevel techniques supported directly in C++. Appendix B is a
guide for programmers going from C++ to C, say, to deal with legacy code.
- 1.2 Learning C++ [notes.learn]
- Some C Learning Notes
- Objective-C Learning notes
- c programe language learn notes 1
- c programe language learn notes 2
- c programe language learn notes 3
- c programming language learn notes 6
- c programming language learn notes 7
- c programming language learn notes 8
- c programming language learn notes 9
- c programming language learn notes 10
- c programming language learn notes 11
- c programe language learn notes 1
- c programe language learn notes 2
- c programe language learn notes 3
- Learning Notes
- DOS command learn notes
- LDD3 learn notes
- PHP中文字符截断
- Jackson 框架,轻易转换JSON
- 添加事件Event
- MySQL DATE_FORMAT() 函数
- 在Android系统中如何给应用增加分享功能,怎样将应用加入系统的分享选择列表?
- 1.2 Learning C++ [notes.learn]
- Java方法的声明及使用
- UITableView 添加 下拉刷新(EGORefreshTableHeaderView)
- Java正则表达式入门
- 串行口控制寄存器(SCON)(转载自百度文库)
- 前缀表达式
- android应用程序消息处理机制之消息发送
- java导出excel java操作文件。文件夹 java制作zip
- Android4.1 settings中添加一个新选项