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

📄 00000000.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;cybergene&nbsp;(基因~也许以后~~),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Thirty-seven&nbsp;Reasons&nbsp;I&nbsp;Love&nbsp;Ruby&nbsp;&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Nov&nbsp;21&nbsp;16:48:01&nbsp;2000)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>Thirty-seven&nbsp;Reasons&nbsp;I&nbsp;Love&nbsp;Ruby&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>------------------------------------------------------------------------&nbsp;<BR>--------&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;<BR>I&nbsp;won't&nbsp;bother&nbsp;giving&nbsp;the&nbsp;history&nbsp;of&nbsp;Ruby&nbsp;here.&nbsp;For&nbsp;those&nbsp;of&nbsp;you&nbsp;who&nbsp;&nbsp;<BR>haven't&nbsp;heard&nbsp;of&nbsp;it,&nbsp;the&nbsp;definitive&nbsp;web&nbsp;site&nbsp;is&nbsp;www.ruby-lang.org,&nbsp;and&nbsp;&nbsp;<BR>comp.lang.ruby&nbsp;is&nbsp;the&nbsp;newsgroup.&nbsp;For&nbsp;those&nbsp;who&nbsp;have,&nbsp;I&nbsp;present&nbsp;to&nbsp;you&nbsp;&nbsp;<BR>the&nbsp;reasons&nbsp;I&nbsp;love&nbsp;this&nbsp;new&nbsp;language.&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>It's&nbsp;object-oriented.&nbsp;What&nbsp;does&nbsp;that&nbsp;mean?&nbsp;Well,&nbsp;for&nbsp;every&nbsp;ten&nbsp;&nbsp;<BR>programmers,&nbsp;there&nbsp;are&nbsp;twelve&nbsp;opinions&nbsp;as&nbsp;to&nbsp;what&nbsp;OOP&nbsp;is.&nbsp;I&nbsp;will&nbsp;leave&nbsp;&nbsp;<BR>it&nbsp;your&nbsp;judgment.&nbsp;But&nbsp;for&nbsp;the&nbsp;record,&nbsp;Ruby&nbsp;does&nbsp;offer&nbsp;encapsulation&nbsp;of&nbsp;&nbsp;<BR>data&nbsp;and&nbsp;methods&nbsp;within&nbsp;objects&nbsp;and&nbsp;allows&nbsp;inheritance&nbsp;from&nbsp;one&nbsp;class&nbsp;to&nbsp;<BR>&nbsp;another;&nbsp;and&nbsp;it&nbsp;allows&nbsp;polymorphism&nbsp;of&nbsp;objects.&nbsp;Unlike&nbsp;some&nbsp;languages&nbsp;&nbsp;<BR>(C++,&nbsp;Perl&nbsp;5,&nbsp;etc.)&nbsp;Ruby&nbsp;was&nbsp;designed&nbsp;from&nbsp;the&nbsp;beginning&nbsp;to&nbsp;be&nbsp;&nbsp;<BR>object-oriented.&nbsp;<BR>&nbsp;<BR>It's&nbsp;a&nbsp;pure&nbsp;OOP&nbsp;language.&nbsp;Am&nbsp;I&nbsp;being&nbsp;redundant?&nbsp;I&nbsp;don't&nbsp;think&nbsp;so.&nbsp;By&nbsp;&nbsp;<BR>this&nbsp;we&nbsp;mean&nbsp;that&nbsp;everything,&nbsp;including&nbsp;primitive&nbsp;data&nbsp;types&nbsp;such&nbsp;as&nbsp;&nbsp;<BR>strings&nbsp;and&nbsp;integers,&nbsp;is&nbsp;represented&nbsp;as&nbsp;an&nbsp;object.&nbsp;There&nbsp;is&nbsp;no&nbsp;need&nbsp;&nbsp;<BR>for&nbsp;wrapper&nbsp;classes&nbsp;such&nbsp;as&nbsp;Java&nbsp;has.&nbsp;And&nbsp;in&nbsp;addition,&nbsp;even&nbsp;constants&nbsp;&nbsp;<BR>are&nbsp;treated&nbsp;as&nbsp;objects,&nbsp;so&nbsp;that&nbsp;a&nbsp;method&nbsp;may&nbsp;be&nbsp;invoked&nbsp;with,&nbsp;for&nbsp;&nbsp;<BR>example,&nbsp;a&nbsp;numeric&nbsp;constant&nbsp;as&nbsp;a&nbsp;receiver.&nbsp;<BR>&nbsp;<BR>It's&nbsp;a&nbsp;dynamic&nbsp;language.&nbsp;For&nbsp;people&nbsp;only&nbsp;familiar&nbsp;with&nbsp;more&nbsp;static&nbsp;&nbsp;<BR>languages&nbsp;such&nbsp;as&nbsp;C++&nbsp;and&nbsp;Java,&nbsp;this&nbsp;is&nbsp;a&nbsp;significant&nbsp;conceptual&nbsp;leap.&nbsp;&nbsp;<BR>It&nbsp;means&nbsp;that&nbsp;methods&nbsp;and&nbsp;variables&nbsp;may&nbsp;be&nbsp;added&nbsp;and&nbsp;redefined&nbsp;at&nbsp;&nbsp;<BR>runtime.&nbsp;It&nbsp;obviates&nbsp;the&nbsp;need&nbsp;for&nbsp;such&nbsp;features&nbsp;as&nbsp;C's&nbsp;conditional&nbsp;&nbsp;<BR>compilation&nbsp;(#ifdef),&nbsp;and&nbsp;makes&nbsp;possible&nbsp;a&nbsp;sophisticated&nbsp;reflection&nbsp;API.&nbsp;<BR>&nbsp;This&nbsp;in&nbsp;turn&nbsp;allows&nbsp;programs&nbsp;to&nbsp;become&nbsp;more&nbsp;&quot;self-aware&quot;&nbsp;--&nbsp;enabling&nbsp;&nbsp;<BR>runtime&nbsp;type&nbsp;information,&nbsp;detection&nbsp;of&nbsp;missing&nbsp;methods,&nbsp;hooks&nbsp;for&nbsp;&nbsp;<BR>detecting&nbsp;added&nbsp;methods,&nbsp;and&nbsp;so&nbsp;on.&nbsp;Ruby&nbsp;is&nbsp;related&nbsp;to&nbsp;Lisp&nbsp;and&nbsp;&nbsp;<BR>Smalltalk&nbsp;in&nbsp;this&nbsp;respect.&nbsp;<BR>&nbsp;<BR>It's&nbsp;an&nbsp;interpreted&nbsp;language.&nbsp;This&nbsp;is&nbsp;a&nbsp;complex&nbsp;issue,&nbsp;and&nbsp;deserves&nbsp;&nbsp;<BR>several&nbsp;comments.&nbsp;It&nbsp;can&nbsp;be&nbsp;argued&nbsp;that&nbsp;performance&nbsp;issues&nbsp;make&nbsp;this&nbsp;a&nbsp;&nbsp;<BR>negative&nbsp;rather&nbsp;than&nbsp;a&nbsp;positive.&nbsp;To&nbsp;this&nbsp;concern,&nbsp;I&nbsp;reply&nbsp;with&nbsp;these&nbsp;&nbsp;<BR>observations:&nbsp;1.&nbsp;First&nbsp;and&nbsp;foremost:&nbsp;A&nbsp;rapid&nbsp;development&nbsp;cycle&nbsp;is&nbsp;a&nbsp;&nbsp;<BR>great&nbsp;benefit,&nbsp;and&nbsp;it&nbsp;is&nbsp;encouraged&nbsp;by&nbsp;the&nbsp;interpreted&nbsp;nature&nbsp;of&nbsp;Ruby.&nbsp;&nbsp;<BR>2.&nbsp;How&nbsp;slow&nbsp;is&nbsp;too&nbsp;slow,&nbsp;anyway?&nbsp;Do&nbsp;some&nbsp;benchmarks&nbsp;before&nbsp;you&nbsp;call&nbsp;it&nbsp;&nbsp;<BR>slow.&nbsp;3.&nbsp;Though&nbsp;some&nbsp;will&nbsp;criticize&nbsp;me,&nbsp;I&nbsp;will&nbsp;say&nbsp;this&nbsp;anyway:&nbsp;&nbsp;<BR>Processors&nbsp;are&nbsp;getting&nbsp;faster&nbsp;every&nbsp;year.&nbsp;4.&nbsp;If&nbsp;you&nbsp;absolutely&nbsp;need&nbsp;&nbsp;<BR>the&nbsp;speed,&nbsp;you&nbsp;can&nbsp;write&nbsp;part&nbsp;of&nbsp;your&nbsp;code&nbsp;in&nbsp;C.&nbsp;5.&nbsp;Finally,&nbsp;in&nbsp;a&nbsp;sense,&nbsp;<BR>&nbsp;it&nbsp;is&nbsp;all&nbsp;a&nbsp;moot&nbsp;point,&nbsp;since&nbsp;no&nbsp;language&nbsp;is&nbsp;inherently&nbsp;interpreted.&nbsp;&nbsp;<BR>There&nbsp;is&nbsp;no&nbsp;law&nbsp;of&nbsp;the&nbsp;universe&nbsp;that&nbsp;says&nbsp;a&nbsp;Ruby&nbsp;compiler&nbsp;cannot&nbsp;be&nbsp;&nbsp;<BR>written.&nbsp;&nbsp;<BR>&nbsp;<BR>It&nbsp;understands&nbsp;regular&nbsp;expressions.&nbsp;For&nbsp;years,&nbsp;this&nbsp;was&nbsp;considered&nbsp;the&nbsp;&nbsp;<BR>domain&nbsp;of&nbsp;UNIX&nbsp;weenies&nbsp;wielding&nbsp;clumsy&nbsp;tools&nbsp;such&nbsp;as&nbsp;grep&nbsp;and&nbsp;sed,&nbsp;or&nbsp;&nbsp;<BR>doing&nbsp;fancy&nbsp;search-and-replace&nbsp;operations&nbsp;in&nbsp;vi.&nbsp;Perl&nbsp;helped&nbsp;change&nbsp;&nbsp;<BR>that,&nbsp;and&nbsp;now&nbsp;Ruby&nbsp;is&nbsp;helping,&nbsp;too.&nbsp;More&nbsp;people&nbsp;than&nbsp;ever&nbsp;recognize&nbsp;&nbsp;<BR>the&nbsp;incredible&nbsp;power&nbsp;in&nbsp;the&nbsp;super-advanced&nbsp;string&nbsp;and&nbsp;text&nbsp;&nbsp;<BR>manipulation&nbsp;techniques.&nbsp;Doubters&nbsp;should&nbsp;go&nbsp;and&nbsp;read&nbsp;Jeffrey&nbsp;Friedl's&nbsp;&nbsp;<BR>book&nbsp;Mastering&nbsp;Regular&nbsp;Expressions.&nbsp;So&nbsp;should&nbsp;non-doubters.&nbsp;<BR>&nbsp;<BR>It's&nbsp;multi-platform.&nbsp;It&nbsp;runs&nbsp;on&nbsp;Linux&nbsp;and&nbsp;other&nbsp;UNIX&nbsp;variants,&nbsp;the&nbsp;&nbsp;<BR>various&nbsp;Windows&nbsp;platforms,&nbsp;BeOS,&nbsp;and&nbsp;even&nbsp;MS-DOS.&nbsp;If&nbsp;my&nbsp;memory&nbsp;serves&nbsp;&nbsp;<BR>me,&nbsp;there's&nbsp;an&nbsp;Amiga&nbsp;version.&nbsp;<BR>&nbsp;<BR>It's&nbsp;derivative.&nbsp;This&nbsp;is&nbsp;a&nbsp;good&nbsp;thing?&nbsp;Outside&nbsp;of&nbsp;the&nbsp;literary&nbsp;world,&nbsp;&nbsp;<BR>yes,&nbsp;it&nbsp;is.&nbsp;Isaac&nbsp;Newton&nbsp;said,&nbsp;&quot;If&nbsp;I&nbsp;have&nbsp;seen&nbsp;farther&nbsp;than&nbsp;others,&nbsp;it&nbsp;&nbsp;<BR>is&nbsp;because&nbsp;I&nbsp;stood&nbsp;on&nbsp;the&nbsp;shoulders&nbsp;of&nbsp;giants.&quot;&nbsp;Ruby&nbsp;certainly&nbsp;has&nbsp;stood&nbsp;<BR>&nbsp;on&nbsp;the&nbsp;shoulders&nbsp;of&nbsp;giants.&nbsp;It&nbsp;borrows&nbsp;features&nbsp;from&nbsp;Smalltalk,&nbsp;CLU,&nbsp;&nbsp;<BR>Lisp,&nbsp;C,&nbsp;C++,&nbsp;Perl,&nbsp;Kornshell,&nbsp;and&nbsp;others.&nbsp;The&nbsp;principles&nbsp;I&nbsp;see&nbsp;at&nbsp;&nbsp;<BR>work&nbsp;are:&nbsp;1.&nbsp;Don't&nbsp;reinvent&nbsp;the&nbsp;wheel.&nbsp;2.&nbsp;Don't&nbsp;fix&nbsp;what&nbsp;isn't&nbsp;broken.&nbsp;&nbsp;<BR>3.&nbsp;Finally,&nbsp;and&nbsp;especially:&nbsp;Leverage&nbsp;people's&nbsp;existing&nbsp;knowledge.&nbsp;You&nbsp;&nbsp;<BR>understand&nbsp;files&nbsp;and&nbsp;pipes&nbsp;in&nbsp;UNIX?&nbsp;Fine,&nbsp;you&nbsp;can&nbsp;use&nbsp;that&nbsp;knowledge.&nbsp;&nbsp;<BR>You&nbsp;spent&nbsp;two&nbsp;years&nbsp;learning&nbsp;all&nbsp;the&nbsp;printf&nbsp;specifiers?&nbsp;Don't&nbsp;worry,&nbsp;you&nbsp;<BR>&nbsp;can&nbsp;still&nbsp;use&nbsp;printf.&nbsp;You&nbsp;know&nbsp;Perl's&nbsp;regex&nbsp;handling?&nbsp;Good,&nbsp;then&nbsp;you've&nbsp;<BR>&nbsp;almost&nbsp;learned&nbsp;Ruby's.&nbsp;<BR>&nbsp;<BR>It's&nbsp;innovative.&nbsp;Is&nbsp;this&nbsp;in&nbsp;contradiction&nbsp;to&nbsp;#7&nbsp;above?&nbsp;Well,&nbsp;partly;&nbsp;&nbsp;<BR>every&nbsp;coin&nbsp;has&nbsp;two&nbsp;sides.&nbsp;Some&nbsp;of&nbsp;Ruby's&nbsp;features&nbsp;are&nbsp;truly&nbsp;innovative,&nbsp;<BR>&nbsp;like&nbsp;the&nbsp;very&nbsp;useful&nbsp;concept&nbsp;of&nbsp;the&nbsp;mix-in.&nbsp;Maybe&nbsp;some&nbsp;of&nbsp;these&nbsp;&nbsp;<BR>features&nbsp;will&nbsp;be&nbsp;borrowed&nbsp;in&nbsp;turn&nbsp;by&nbsp;future&nbsp;languages.&nbsp;<BR>&nbsp;<BR>It's&nbsp;a&nbsp;Very&nbsp;High-Level&nbsp;Language&nbsp;(VHLL).&nbsp;This&nbsp;is&nbsp;subject&nbsp;to&nbsp;debate,&nbsp;&nbsp;<BR>because&nbsp;this&nbsp;term&nbsp;is&nbsp;not&nbsp;in&nbsp;widespread&nbsp;use,&nbsp;and&nbsp;its&nbsp;meaning&nbsp;is&nbsp;even&nbsp;more&nbsp;<BR>&nbsp;disputable&nbsp;than&nbsp;that&nbsp;of&nbsp;OOP.&nbsp;When&nbsp;I&nbsp;say&nbsp;this,&nbsp;I&nbsp;mean&nbsp;that&nbsp;Ruby&nbsp;can&nbsp;&nbsp;<BR>handle&nbsp;complex&nbsp;data&nbsp;structures&nbsp;and&nbsp;complex&nbsp;operations&nbsp;on&nbsp;them&nbsp;with&nbsp;&nbsp;<BR>relatively&nbsp;few&nbsp;instructions,&nbsp;in&nbsp;accordance&nbsp;with&nbsp;what&nbsp;some&nbsp;call&nbsp;the&nbsp;&nbsp;<BR>Principle&nbsp;of&nbsp;Least&nbsp;Effort.&nbsp;<BR>&nbsp;<BR>It&nbsp;has&nbsp;a&nbsp;smart&nbsp;garbage&nbsp;collector.&nbsp;Routines&nbsp;like&nbsp;malloc&nbsp;and&nbsp;free&nbsp;are&nbsp;only&nbsp;<BR>&nbsp;last&nbsp;night's&nbsp;bad&nbsp;dream.&nbsp;You&nbsp;don't&nbsp;even&nbsp;have&nbsp;to&nbsp;call&nbsp;destructors.&nbsp;Enough&nbsp;<BR>&nbsp;said.&nbsp;&nbsp;<BR>&nbsp;<BR>It's&nbsp;a&nbsp;scripting&nbsp;language.&nbsp;Don't&nbsp;make&nbsp;the&nbsp;mistake&nbsp;of&nbsp;thinking&nbsp;it&nbsp;isn't&nbsp;&nbsp;<BR>powerful&nbsp;because&nbsp;of&nbsp;this.&nbsp;It's&nbsp;not&nbsp;a&nbsp;toy.&nbsp;It's&nbsp;a&nbsp;full-fledged&nbsp;language&nbsp;&nbsp;<BR>that&nbsp;happens&nbsp;to&nbsp;make&nbsp;it&nbsp;easy&nbsp;to&nbsp;do&nbsp;traditional&nbsp;scripting&nbsp;operations&nbsp;like&nbsp;<BR>&nbsp;running&nbsp;external&nbsp;programs,&nbsp;examining&nbsp;system&nbsp;resources,&nbsp;using&nbsp;pipes,&nbsp;&nbsp;<BR>capturing&nbsp;output,&nbsp;and&nbsp;so&nbsp;on.&nbsp;<BR>&nbsp;<BR>It's&nbsp;versatile.&nbsp;It&nbsp;can&nbsp;do&nbsp;the&nbsp;things&nbsp;that&nbsp;Kornshell&nbsp;does&nbsp;well&nbsp;and&nbsp;the&nbsp;&nbsp;<BR>things&nbsp;that&nbsp;C&nbsp;does&nbsp;well.&nbsp;You&nbsp;want&nbsp;to&nbsp;write&nbsp;a&nbsp;quick&nbsp;ten-line&nbsp;hack&nbsp;to&nbsp;do&nbsp;a&nbsp;<BR>&nbsp;one-time&nbsp;task,&nbsp;or&nbsp;a&nbsp;wrapper&nbsp;for&nbsp;some&nbsp;legacy&nbsp;programs?&nbsp;Fine.&nbsp;You&nbsp;want&nbsp;to&nbsp;<BR>&nbsp;write&nbsp;a&nbsp;web&nbsp;server,&nbsp;a&nbsp;CGI,&nbsp;or&nbsp;a&nbsp;chess&nbsp;program?&nbsp;Again,&nbsp;fine.&nbsp;<BR>&nbsp;<BR>It's&nbsp;thread-capable.&nbsp;You&nbsp;can&nbsp;write&nbsp;multi-threaded&nbsp;applications&nbsp;with&nbsp;a&nbsp;&nbsp;<BR>simple&nbsp;API.&nbsp;Yes,&nbsp;even&nbsp;on&nbsp;MS-DOS.&nbsp;<BR>&nbsp;<BR>It's&nbsp;open-source.&nbsp;You&nbsp;want&nbsp;to&nbsp;look&nbsp;at&nbsp;the&nbsp;source&nbsp;code?&nbsp;Go&nbsp;ahead.&nbsp;Want&nbsp;to&nbsp;<BR>&nbsp;suggest&nbsp;a&nbsp;patch?&nbsp;Go&nbsp;ahead.&nbsp;You&nbsp;want&nbsp;to&nbsp;connect&nbsp;with&nbsp;a&nbsp;knowledgeable&nbsp;and&nbsp;<BR>&nbsp;helpful&nbsp;user&nbsp;community,&nbsp;including&nbsp;the&nbsp;language&nbsp;creator&nbsp;himself?&nbsp;You&nbsp;&nbsp;<BR>can.&nbsp;<BR>&nbsp;<BR>It's&nbsp;intuitive.&nbsp;The&nbsp;learning&nbsp;curve&nbsp;is&nbsp;low,&nbsp;and&nbsp;once&nbsp;you&nbsp;get&nbsp;over&nbsp;the&nbsp;&nbsp;<BR>first&nbsp;hump,&nbsp;you&nbsp;start&nbsp;to&nbsp;&quot;guess&quot;&nbsp;how&nbsp;things&nbsp;work?and&nbsp;your&nbsp;guesses&nbsp;are&nbsp;&nbsp;<BR>often&nbsp;correct.&nbsp;Ruby&nbsp;endeavors&nbsp;to&nbsp;follow&nbsp;the&nbsp;Principle&nbsp;of&nbsp;Least&nbsp;&nbsp;<BR>Astonishment&nbsp;(or&nbsp;Surprise).&nbsp;<BR>&nbsp;<BR>It&nbsp;has&nbsp;an&nbsp;exception&nbsp;mechanism.&nbsp;Like&nbsp;Java&nbsp;and&nbsp;C++,&nbsp;Ruby&nbsp;understands&nbsp;&nbsp;<BR>exceptions.&nbsp;This&nbsp;means&nbsp;less&nbsp;messing&nbsp;with&nbsp;return&nbsp;codes,&nbsp;fewer&nbsp;nested&nbsp;if&nbsp;&nbsp;<BR>statements,&nbsp;less&nbsp;spaghetti&nbsp;logic,&nbsp;and&nbsp;better&nbsp;error&nbsp;handling.&nbsp;<BR>&nbsp;<BR>It&nbsp;has&nbsp;an&nbsp;advanced&nbsp;Array&nbsp;class.&nbsp;Arrays&nbsp;are&nbsp;dynamic;&nbsp;you&nbsp;don't&nbsp;have&nbsp;to&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

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