⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;william@cis_nctu&nbsp;(C++/ASM/Win&nbsp;Master),&nbsp;信区:&nbsp;oop&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;C++&nbsp;爸爸给&nbsp;C++&nbsp;初学者的信&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>===============================================================================&nbsp;<BR>From:&nbsp;<A HREF="mailto:bs@alice.att.com">bs@alice.att.com</A>&nbsp;(Bjarne&nbsp;Stroustrup)&nbsp;<BR>Newsgroups:&nbsp;comp.os.msdos.programmer,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comp.sys.ibm.pc.programmer,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comp.lang.c++,comp.lang.c&nbsp;<BR>Subject:&nbsp;Newbie&nbsp;Wants&nbsp;Advice&nbsp;on&nbsp;C-Programming&nbsp;<BR>Summary:&nbsp;general&nbsp;comments&nbsp;on&nbsp;learning&nbsp;C++&nbsp;<BR>Date:&nbsp;29&nbsp;Dec&nbsp;92&nbsp;17:52:53&nbsp;GMT&nbsp;<BR>Organization:&nbsp;AT&amp;T&nbsp;Bell&nbsp;Laboratories,&nbsp;Murray&nbsp;Hill&nbsp;NJ&nbsp;<BR>Lines:&nbsp;288&nbsp;<BR>&nbsp;<BR>There&nbsp;has&nbsp;-&nbsp;under&nbsp;various&nbsp;headings&nbsp;-&nbsp;been&nbsp;several&nbsp;related&nbsp;discussions&nbsp;<BR>about&nbsp;the&nbsp;proper&nbsp;way&nbsp;to&nbsp;learn&nbsp;C++,&nbsp;C++'s&nbsp;relation&nbsp;to&nbsp;C,&nbsp;C++'s&nbsp;relation&nbsp;<BR>to&nbsp;Smalltalk,&nbsp;the&nbsp;difference&nbsp;(or&nbsp;not)&nbsp;between&nbsp;data&nbsp;abstraction&nbsp;and&nbsp;<BR>object-oriented&nbsp;programming,&nbsp;etc.&nbsp;<BR>&nbsp;<BR>I&nbsp;think&nbsp;the&nbsp;practical&nbsp;concern&nbsp;underlying&nbsp;many&nbsp;of&nbsp;these&nbsp;discussions&nbsp;is:&nbsp;<BR>&nbsp;<BR>Given&nbsp;that&nbsp;I&nbsp;don't&nbsp;have&nbsp;much&nbsp;time&nbsp;to&nbsp;learn&nbsp;new&nbsp;techniques&nbsp;<BR>and&nbsp;concepts,&nbsp;how&nbsp;do&nbsp;I&nbsp;start&nbsp;using&nbsp;C++&nbsp;effectively?&nbsp;<BR>&nbsp;<BR>It&nbsp;is&nbsp;clear&nbsp;that&nbsp;to&nbsp;use&nbsp;C++&nbsp;``best''&nbsp;in&nbsp;an&nbsp;arbitrary&nbsp;situation&nbsp;you&nbsp;<BR>need&nbsp;a&nbsp;deep&nbsp;understanding&nbsp;of&nbsp;many&nbsp;concepts&nbsp;and&nbsp;techniques,&nbsp;but&nbsp;that&nbsp;<BR>can&nbsp;only&nbsp;be&nbsp;achieved&nbsp;through&nbsp;years&nbsp;of&nbsp;study&nbsp;and&nbsp;experiments.&nbsp;It&nbsp;is&nbsp;<BR>little&nbsp;help&nbsp;to&nbsp;tell&nbsp;a&nbsp;novice&nbsp;(a&nbsp;novice&nbsp;with&nbsp;C++,&nbsp;typically&nbsp;not&nbsp;a&nbsp;<BR>novice&nbsp;with&nbsp;programming&nbsp;in&nbsp;general),&nbsp;first&nbsp;to&nbsp;gain&nbsp;a&nbsp;thorough&nbsp;<BR>understanding&nbsp;of&nbsp;C,&nbsp;Smalltalk,&nbsp;CLOS,&nbsp;Pascal,&nbsp;ML,&nbsp;Eiffel,&nbsp;assembler,&nbsp;<BR>capability&nbsp;based&nbsp;systems,&nbsp;OODMBSs,&nbsp;program&nbsp;verification&nbsp;techniques,&nbsp;<BR>etc.,&nbsp;and&nbsp;then&nbsp;apply&nbsp;the&nbsp;lessons&nbsp;learned&nbsp;to&nbsp;C++&nbsp;on&nbsp;his&nbsp;or&nbsp;her&nbsp;next&nbsp;<BR>project.&nbsp;All&nbsp;of&nbsp;those&nbsp;topics&nbsp;are&nbsp;worthy&nbsp;of&nbsp;study&nbsp;and&nbsp;would&nbsp;-&nbsp;in&nbsp;the&nbsp;<BR>long&nbsp;run&nbsp;-&nbsp;help,&nbsp;but&nbsp;practical&nbsp;programmers&nbsp;(and&nbsp;students)&nbsp;cannot&nbsp;<BR>take&nbsp;years&nbsp;off&nbsp;from&nbsp;whatever&nbsp;they&nbsp;are&nbsp;doing&nbsp;for&nbsp;a&nbsp;comprehensive&nbsp;<BR>study&nbsp;of&nbsp;programming&nbsp;languages&nbsp;and&nbsp;techniques.&nbsp;<BR>&nbsp;<BR>On&nbsp;the&nbsp;other&nbsp;hand,&nbsp;most&nbsp;novices&nbsp;understand&nbsp;that&nbsp;``a&nbsp;little&nbsp;knowledge&nbsp;<BR>is&nbsp;a&nbsp;dangerous&nbsp;thing''&nbsp;and&nbsp;would&nbsp;like&nbsp;some&nbsp;assurance&nbsp;that&nbsp;the&nbsp;little&nbsp;<BR>they&nbsp;can&nbsp;afford&nbsp;time&nbsp;to&nbsp;learn&nbsp;before/while&nbsp;starting&nbsp;their&nbsp;next&nbsp;project&nbsp;<BR>will&nbsp;be&nbsp;of&nbsp;help&nbsp;and&nbsp;not&nbsp;a&nbsp;distraction&nbsp;or&nbsp;a&nbsp;hinderance&nbsp;to&nbsp;the&nbsp;success&nbsp;<BR>of&nbsp;that&nbsp;project.&nbsp;They&nbsp;would&nbsp;also&nbsp;like&nbsp;to&nbsp;be&nbsp;confident&nbsp;that&nbsp;the&nbsp;little&nbsp;<BR>new&nbsp;they&nbsp;can&nbsp;absorb&nbsp;immediately&nbsp;can&nbsp;be&nbsp;part&nbsp;of&nbsp;a&nbsp;path&nbsp;that&nbsp;can&nbsp;lead&nbsp;<BR>to&nbsp;the&nbsp;more&nbsp;comprehensive&nbsp;understanding&nbsp;actually&nbsp;desired&nbsp;rather&nbsp;than&nbsp;<BR>an&nbsp;isolated&nbsp;skill&nbsp;leading&nbsp;nowhere&nbsp;further.&nbsp;<BR>&nbsp;<BR>Naturally,&nbsp;more&nbsp;than&nbsp;one&nbsp;approach&nbsp;can&nbsp;fulfill&nbsp;these&nbsp;criteria&nbsp;and&nbsp;<BR>exactly&nbsp;which&nbsp;to&nbsp;choose&nbsp;depends&nbsp;on&nbsp;the&nbsp;individual's&nbsp;background,&nbsp;<BR>immediate&nbsp;needs,&nbsp;and&nbsp;the&nbsp;time&nbsp;available.&nbsp;I&nbsp;think&nbsp;many&nbsp;educators,&nbsp;<BR>trainers,&nbsp;and&nbsp;posters&nbsp;to&nbsp;the&nbsp;net&nbsp;underestimate&nbsp;the&nbsp;imporatance&nbsp;<BR>of&nbsp;this:&nbsp;after&nbsp;all,&nbsp;it&nbsp;appears&nbsp;so&nbsp;much&nbsp;more&nbsp;cost&nbsp;effective&nbsp;-&nbsp;and&nbsp;<BR>easier&nbsp;-&nbsp;to&nbsp;``educate''&nbsp;people&nbsp;in&nbsp;large&nbsp;batches&nbsp;rather&nbsp;than&nbsp;<BR>bothering&nbsp;with&nbsp;individuals.&nbsp;<BR>&nbsp;<BR>Consider&nbsp;a&nbsp;few&nbsp;common&nbsp;questions:&nbsp;<BR>&nbsp;<BR>I&nbsp;don't&nbsp;know&nbsp;C&nbsp;or&nbsp;C++,&nbsp;should&nbsp;I&nbsp;learn&nbsp;C&nbsp;first?&nbsp;<BR>&nbsp;<BR>I&nbsp;want&nbsp;to&nbsp;do&nbsp;OOP,&nbsp;should&nbsp;I&nbsp;learn&nbsp;Smalltalk&nbsp;before&nbsp;C++?&nbsp;<BR>&nbsp;<BR>Should&nbsp;I&nbsp;start&nbsp;using&nbsp;C++&nbsp;as&nbsp;an&nbsp;OOPL&nbsp;or&nbsp;as&nbsp;a&nbsp;better&nbsp;C?&nbsp;<BR>&nbsp;<BR>How&nbsp;long&nbsp;does&nbsp;it&nbsp;take&nbsp;to&nbsp;learn&nbsp;C++?&nbsp;<BR>&nbsp;<BR>I&nbsp;don't&nbsp;claim&nbsp;to&nbsp;have&nbsp;the&nbsp;only&nbsp;answers&nbsp;``the&nbsp;(only)&nbsp;right&nbsp;answers''&nbsp;<BR>to&nbsp;these&nbsp;questions.&nbsp;As&nbsp;I&nbsp;said&nbsp;the&nbsp;``right''&nbsp;answer&nbsp;depends&nbsp;on&nbsp;the&nbsp;<BR>circumstances.&nbsp;Most&nbsp;C++&nbsp;textbook&nbsp;writers,&nbsp;teachers,&nbsp;and&nbsp;programmers&nbsp;<BR>have&nbsp;their&nbsp;own&nbsp;answers.&nbsp;For&nbsp;example,&nbsp;I&nbsp;seem&nbsp;to&nbsp;remember&nbsp;that&nbsp;the&nbsp;C++&nbsp;<BR>FAQ&nbsp;discusses&nbsp;these&nbsp;questions.&nbsp;My&nbsp;answers&nbsp;are&nbsp;based&nbsp;on&nbsp;years&nbsp;of&nbsp;<BR>programming&nbsp;in&nbsp;C++&nbsp;and&nbsp;other&nbsp;languages,&nbsp;teaching&nbsp;short&nbsp;C++&nbsp;design&nbsp;<BR>and&nbsp;programming&nbsp;courses&nbsp;(mainly&nbsp;to&nbsp;professional&nbsp;programmers),&nbsp;<BR>consulting&nbsp;about&nbsp;to&nbsp;introduction&nbsp;of&nbsp;and&nbsp;use&nbsp;of&nbsp;C++,&nbsp;discussing&nbsp;C++,&nbsp;<BR>and&nbsp;generally&nbsp;thinking&nbsp;about&nbsp;programming,&nbsp;design,&nbsp;and&nbsp;C++.&nbsp;<BR>&nbsp;<BR>I&nbsp;don't&nbsp;know&nbsp;C&nbsp;or&nbsp;C++,&nbsp;should&nbsp;I&nbsp;learn&nbsp;C&nbsp;first?&nbsp;<BR>&nbsp;<BR>No.&nbsp;Learn&nbsp;C++&nbsp;first.&nbsp;The&nbsp;C&nbsp;subset&nbsp;of&nbsp;C++&nbsp;is&nbsp;easier&nbsp;to&nbsp;learn&nbsp;for&nbsp;C/C++&nbsp;<BR>novices&nbsp;and&nbsp;easier&nbsp;to&nbsp;use&nbsp;than&nbsp;C&nbsp;itself.&nbsp;The&nbsp;reason&nbsp;is&nbsp;that&nbsp;<BR>C++&nbsp;provides&nbsp;better&nbsp;guarantees&nbsp;than&nbsp;C&nbsp;(stronger&nbsp;type&nbsp;checking).&nbsp;<BR>In&nbsp;addition,&nbsp;C++&nbsp;provides&nbsp;many&nbsp;minor&nbsp;features,&nbsp;such&nbsp;as&nbsp;the&nbsp;`new'&nbsp;<BR>operator,&nbsp;that&nbsp;are&nbsp;notationally&nbsp;more&nbsp;convenient&nbsp;and&nbsp;less&nbsp;error-prone&nbsp;<BR>than&nbsp;their&nbsp;C&nbsp;alternatives.&nbsp;Thus,&nbsp;if&nbsp;you&nbsp;plan&nbsp;to&nbsp;learn&nbsp;C&nbsp;and&nbsp;C++&nbsp;(or&nbsp;<BR>just&nbsp;C++)&nbsp;you&nbsp;shouldn't&nbsp;take&nbsp;the&nbsp;detour&nbsp;through&nbsp;C.&nbsp;To&nbsp;use&nbsp;C&nbsp;well,&nbsp;<BR>you&nbsp;need&nbsp;to&nbsp;know&nbsp;tricks&nbsp;and&nbsp;techniques&nbsp;that&nbsp;aren't&nbsp;anywhere&nbsp;near&nbsp;<BR>as&nbsp;important&nbsp;or&nbsp;common&nbsp;in&nbsp;C++&nbsp;as&nbsp;they&nbsp;are&nbsp;in&nbsp;C.&nbsp;Good&nbsp;C&nbsp;textbooks&nbsp;<BR>tends&nbsp;(reasonably&nbsp;enough)&nbsp;to&nbsp;emphasize&nbsp;the&nbsp;techniques&nbsp;that&nbsp;you&nbsp;<BR>will&nbsp;need&nbsp;for&nbsp;completing&nbsp;major&nbsp;projects&nbsp;in&nbsp;C.&nbsp;Good&nbsp;C++&nbsp;textbooks,&nbsp;<BR>on&nbsp;the&nbsp;other&nbsp;hand,&nbsp;emphasizes&nbsp;techniques&nbsp;and&nbsp;features&nbsp;that&nbsp;lead&nbsp;<BR>to&nbsp;the&nbsp;use&nbsp;of&nbsp;C++&nbsp;for&nbsp;data&nbsp;abstraction&nbsp;and&nbsp;object-oriented&nbsp;programming.&nbsp;<BR>Knowing&nbsp;the&nbsp;C++&nbsp;constructs,&nbsp;their&nbsp;(lower-level)&nbsp;C&nbsp;alternatives&nbsp;are&nbsp;<BR>trivially&nbsp;learned&nbsp;(if&nbsp;necessary).&nbsp;<BR>&nbsp;<BR>To&nbsp;show&nbsp;my&nbsp;inclinations:&nbsp;<BR>&nbsp;<BR>To&nbsp;learn&nbsp;C&nbsp;use:&nbsp;<BR>&nbsp;<BR>Kernighan&nbsp;and&nbsp;Ritchie:&nbsp;<BR>The&nbsp;C&nbsp;programming&nbsp;Language&nbsp;(2nd&nbsp;edition)&nbsp;<BR>Prentice&nbsp;Hall,&nbsp;1988.&nbsp;<BR>&nbsp;<BR>as&nbsp;the&nbsp;primary&nbsp;textbook.&nbsp;To&nbsp;learn&nbsp;C++&nbsp;use&nbsp;<BR>&nbsp;<BR>Stroustrup:&nbsp;<BR>The&nbsp;C++&nbsp;programming&nbsp;Language&nbsp;(2nd&nbsp;edition)&nbsp;<BR>Addison&nbsp;Wesley,&nbsp;1991.&nbsp;<BR>&nbsp;<BR>Both&nbsp;books&nbsp;have&nbsp;the&nbsp;advantage&nbsp;of&nbsp;combining&nbsp;a&nbsp;tutorial&nbsp;presentation&nbsp;<BR>of&nbsp;language&nbsp;features&nbsp;and&nbsp;techniques&nbsp;with&nbsp;a&nbsp;complete&nbsp;reference&nbsp;manual.&nbsp;<BR>Both&nbsp;describes&nbsp;their&nbsp;respective&nbsp;languages&nbsp;rather&nbsp;than&nbsp;particular&nbsp;<BR>implementations&nbsp;and&nbsp;neither&nbsp;attempts&nbsp;to&nbsp;describe&nbsp;particular&nbsp;libraries&nbsp;<BR>shipped&nbsp;with&nbsp;particular&nbsp;implementations.&nbsp;<BR>&nbsp;<BR>There&nbsp;are&nbsp;many&nbsp;other&nbsp;good&nbsp;textbooks&nbsp;and&nbsp;many&nbsp;other&nbsp;styles&nbsp;of&nbsp;<BR>presentation,&nbsp;but&nbsp;these&nbsp;are&nbsp;my&nbsp;favorites&nbsp;for&nbsp;comprehension&nbsp;<BR>of&nbsp;concepts&nbsp;and&nbsp;styles.&nbsp;It&nbsp;is&nbsp;always&nbsp;wise&nbsp;to&nbsp;look&nbsp;carefully&nbsp;<BR>at&nbsp;at&nbsp;least&nbsp;two&nbsp;sources&nbsp;of&nbsp;information&nbsp;to&nbsp;compensate&nbsp;for&nbsp;bias&nbsp;<BR>and&nbsp;possible&nbsp;shortcommings.&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>I&nbsp;want&nbsp;to&nbsp;do&nbsp;OOP,&nbsp;should&nbsp;I&nbsp;learn&nbsp;Smalltalk&nbsp;before&nbsp;C++?&nbsp;<BR>&nbsp;<BR>No.&nbsp;If&nbsp;you&nbsp;plan&nbsp;to&nbsp;use&nbsp;C++,&nbsp;learn&nbsp;C++.&nbsp;Languages&nbsp;such&nbsp;as&nbsp;C++,&nbsp;Smalltalk,&nbsp;<BR>Simula,&nbsp;CLOS,&nbsp;Eiffel,&nbsp;etc.,&nbsp;each&nbsp;has&nbsp;their&nbsp;own&nbsp;view&nbsp;of&nbsp;the&nbsp;key&nbsp;notions&nbsp;<BR>of&nbsp;abstraction&nbsp;and&nbsp;inheritance&nbsp;and&nbsp;each&nbsp;support&nbsp;them&nbsp;in&nbsp;slightly&nbsp;different&nbsp;<BR>ways&nbsp;to&nbsp;support&nbsp;different&nbsp;notions&nbsp;of&nbsp;design.&nbsp;Learning&nbsp;Smalltalk&nbsp;will&nbsp;<BR>certainly&nbsp;teach&nbsp;you&nbsp;valuable&nbsp;lessons,&nbsp;but&nbsp;it&nbsp;will&nbsp;not&nbsp;teach&nbsp;you&nbsp;how&nbsp;to&nbsp;<BR>write&nbsp;programs&nbsp;in&nbsp;C++.&nbsp;In&nbsp;fact,&nbsp;unless&nbsp;you&nbsp;have&nbsp;the&nbsp;time&nbsp;to&nbsp;learn&nbsp;and&nbsp;<BR>digest&nbsp;both&nbsp;the&nbsp;Smalltalk&nbsp;and&nbsp;the&nbsp;C++&nbsp;concepts&nbsp;and&nbsp;techniques,&nbsp;using&nbsp;<BR>Smalltalk&nbsp;as&nbsp;a&nbsp;learning&nbsp;tool&nbsp;can&nbsp;lead&nbsp;to&nbsp;poor&nbsp;C++&nbsp;designs.&nbsp;<BR>&nbsp;<BR>Naturally,&nbsp;learning&nbsp;both&nbsp;C++&nbsp;and&nbsp;Smalltalk&nbsp;so&nbsp;that&nbsp;you&nbsp;can&nbsp;draw&nbsp;from&nbsp;<BR>a&nbsp;wider&nbsp;field&nbsp;of&nbsp;experience&nbsp;and&nbsp;examples&nbsp;is&nbsp;the&nbsp;ideal,&nbsp;but&nbsp;people&nbsp;<BR>who&nbsp;haven't&nbsp;taken&nbsp;the&nbsp;time&nbsp;to&nbsp;digest&nbsp;all&nbsp;the&nbsp;new&nbsp;ideas&nbsp;often&nbsp;end&nbsp;up&nbsp;<BR>``writing&nbsp;Smalltalk&nbsp;in&nbsp;C++''&nbsp;that&nbsp;is&nbsp;applying&nbsp;Smalltalk&nbsp;design&nbsp;notions&nbsp;<BR>that&nbsp;doesn't&nbsp;fit&nbsp;well&nbsp;in&nbsp;C++.&nbsp;This&nbsp;can&nbsp;be&nbsp;as&nbsp;sub-optimal&nbsp;writing&nbsp;C&nbsp;or&nbsp;<BR>Fortran&nbsp;in&nbsp;C++.&nbsp;<BR>&nbsp;<BR>One&nbsp;reason&nbsp;often&nbsp;quoted&nbsp;for&nbsp;learning&nbsp;Smalltalk&nbsp;is&nbsp;that&nbsp;it&nbsp;is&nbsp;``pure''&nbsp;<BR>and&nbsp;thus&nbsp;force&nbsp;people&nbsp;to&nbsp;think&nbsp;and&nbsp;program&nbsp;``object&nbsp;oriented.''&nbsp;<BR>I&nbsp;will&nbsp;not&nbsp;go&nbsp;into&nbsp;the&nbsp;discussion&nbsp;about&nbsp;``purity''&nbsp;beyond&nbsp;mentioning&nbsp;<BR>that&nbsp;I&nbsp;think&nbsp;that&nbsp;a&nbsp;general&nbsp;purpose&nbsp;programming&nbsp;language&nbsp;ought&nbsp;to&nbsp;<BR>and&nbsp;can&nbsp;support&nbsp;more&nbsp;than&nbsp;one&nbsp;programming&nbsp;style&nbsp;(``paradigm'').&nbsp;<BR>&nbsp;<BR>The&nbsp;point&nbsp;here&nbsp;is&nbsp;that&nbsp;styles&nbsp;that&nbsp;are&nbsp;appropriate&nbsp;and&nbsp;well&nbsp;<BR>supported&nbsp;in&nbsp;Smalltalk&nbsp;are&nbsp;not&nbsp;necessarily&nbsp;appropriate&nbsp;for&nbsp;C++.&nbsp;<BR>In&nbsp;particular,&nbsp;a&nbsp;slavish&nbsp;following&nbsp;of&nbsp;Smalltalk&nbsp;style&nbsp;in&nbsp;C++&nbsp;<BR>leads&nbsp;to&nbsp;inefficient,&nbsp;ugly,&nbsp;and&nbsp;hard&nbsp;to&nbsp;maintain&nbsp;C++&nbsp;programs.&nbsp;<BR>The&nbsp;reason&nbsp;is&nbsp;that&nbsp;good&nbsp;C++&nbsp;requires&nbsp;design&nbsp;that&nbsp;takes&nbsp;advantage&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -