編程的哲學
❶ C語言重要嗎!!!!我是軟體專業的 很困惑
先說對樓主的建議:
C在應用方面的優勢在於底層,以及任何對效率有苛刻要求的地方。這種地方並不少,如操作系統、嵌入式、一些軟體中對效率要求高的部分。很多java程序也需要C來配合,如tomcat。
C對於專業技能鍛煉方面意義更大。因為一個鐵的事實是「熟悉內部原理的人更能寫出優質的代碼」,C對上承接高級語言,對下和匯編掛鉤,這種特殊的位置註定了C在眾多計算機語言中是了解計算機的一個絕佳切入點。即便只是不太深刻的了解,C配合著其他理論課程帶給我的認知就是所謂非計算機專業出身的人沒有的東西了。這是我個人的想法以及認為最重要的地方。
對於樓主現在的處境,我的建議是「學有餘力以廣為主,力有不逮以精為主」。對C即便興趣不大也應該因它的重要性對自己要求嚴格一點點,一點點就夠了,比及格高一點點即可。然後試著看看java,我是看孫鑫的視頻入門的,感覺不錯。然後依照興趣,選擇C還是java。但我相信,如果你走技術路線,總有一天你會回來重新審視C和試著去深入了解C的,而且不會太遠。
另外我個人的經驗是兩點很重要:一個是興趣所向,看樓主的提問方式就知道樓主也很贊同這點啊。另一個是培養自信,尤其是對於我這種心理不強大的人,我需要自信讓我走下去。具體做法可以是先讀薄的書,換一個你可以稍微虐待一下別人的環境(嘿嘿……),視樓主情況而定。
下面是我個人有關C的經驗經歷:
我現在是一個二本學校的計算機專業的,大三。(看到這你會不會懷疑我上面說的啊,哈哈)
大一上學期開的程序設計課程,C。當時我們學的C只是基本的語法,同時憧憬C++,因為據說C++能做界面,而不是C那樣黑黑的框框,一點也不美觀。而且當時見識淺薄,都不太知道Java,呵呵。但課堂狀態比較好,保持聽課和作業,不過課外一點不付出勞動。
大一下學期的重點是數據結構,也是通過C講的,當時隱約的認識到重點是語言背後的東西,語言是一種媒介。正確的想法卻導致我對C重要性的認識程度進一步下降,但對C的熟練度上升,期末作業是排序演算法比較,還是一個黑框框的程序。
大一暑假加入學校ACM,做了杭電2000-2100的100道入門題目,還有其他的50+左右。那對於我的技術水平絕對是質的飛躍,體現在演算法、C的熟練度、調適能力及各種細節上。但對C的認識沒提高。嘗試C++,不到兩天放棄,╮(╯▽╰)╭。但做題時開始使用C++的模板及一些庫函數。
大二相對懈怠。大二上有C++,是面向對象入門。我覺得你們學校的java應該是同一個目的。以面向對象理論的入門為主。不過我當時真是入門啊,邁進去腳看看就出來了。
大二下我都不記得幹了什麼了。。。好像是嘗試Android來著,後來放棄了,有點陷入自我否定的情緒低潮。也是那時開始接觸的java,但什麼也沒學到。
大二暑假,奮發圖強,以廣為主,通過看視頻或文字教程+動手實踐的方式接觸了vc++、java、php、python。然後就迷上了python。當時對C的感覺有點微妙,因為C能做到一些python難以做到的事,而且python本身就是一個出色的C項目。開始重新審視C在眾多語言中的位置。
大三上,開java課。很認真的聽了java,並與python做對比,收獲太大了,具體細節不提。對C的認識保持不變。
現在的寒假,做項目的時候看到了一些C的面向對象編程,發現,這絕對不是噱頭。也開始看python的源碼,更是深深為C的精巧靈活所折服。C不可或缺、必須要找時間再深入學習,這是我現在迫切的想法。
現在我學習時最關注3個東西:1.語言背後的東西。因為你是以語言提問,我就以語言上的經歷回答,但這絕對不是最重要的,計算機科學的發展依託於什麼?必然主要是理論的成長。而理論在實踐中的影響像是隱形的,又無處不在、威力巨大。2.python特有的實現方式。3.用C實現時的適用性、效率優勢多大、與python實現的對比等。就像剛才說的,第三點的關注度還在提高中。
以上個人經驗,不一定正確,只是希望作為你的一個參考,給你些幫助。就像我剛學的時候渴求的那些幫助一樣。 :-)
❷ 軟體和哲學有什麼關系
軟體的設計是根據面向物體或面向編程。
哲學是理論層面的東西,比如編程理論編程思想之類的。
哲學和軟體的關系是,哲學指導軟體設計和編寫。
例如,要做一個很大的軟體,那麼每個分工必須很細,軟體的部分細分到,一個類只做一件事。
這就是哲學思想。
❸ 幼兒園編程課是學什麼的
通過編程游戲的啟蒙和可視化圖形編程等課程,培養孩子計算思維和創新思維,更能激發孩子對互聯網程序的熱愛。通過了解編程思維,讓孩子懂得把大的問題拆分,化繁為簡的去解決。
兒童從幾歲開始學編程較合適
1、0至3歲階段:這個階段的孩子不適合學習編程。0至3歲應以啟蒙為主,重點是開始訓練孩子的語言能力、動手能力。多和孩子對話、讀故事,多讓孩子讀繪本。也適當陪孩子一起玩小游戲,比如畫畫、搭積木等。
2、4至6歲階段:4至5歲階段的孩子正處於語言敏感期,可以先進行少兒編程語言的啟蒙,帶孩子玩一些不含字母的編程小游戲,比如BoxIsland、LightBotJr。目的是先讓孩子了解簡單的編碼邏輯,而且先進行語言啟蒙,再進行豐富多樣的編程形式的實踐,往往收效甚好。6歲時,可以接觸學習少兒編程,但主要是Scracth做的玩具,這時候做的主要是還是邏輯能力的培養。
3、7至8歲階段:7至8歲的孩子剛剛處於小學階段,已經可以嘗試讓孩子學習能夠解決各種復雜問題編程思維,可以選擇一些趣味性的編程工具,引導孩子的興趣,比如圖形化的編程工具Scratch。
4、9至12歲階段:如果你想讓孩子學一門編程語言,例如當前流行的Python。它的優點是入門簡單,應用范圍廣,學習的內容包括for循環、if判斷語句等。那麼比較適合9至12歲上小學四年級有一定數學和英語基礎的孩子。
5、12+歲階段:如果你想讓孩子學習有一定難度的演算法,掌握類似遞推法、窮舉法等概念時,那麼孩子的年紀最好要在12歲以上,也就是初中一年級開始比較好。因為演算法要求孩子必須具備一定的代碼編程基礎和較強的邏輯思維能力。
❹ python是一種什麼類型的編程語言
Python(英國發音:/?pa?θ?n/ 美國發音:/?pa?θɑ?n/)是一種廣泛使用的解釋型、高級編程、通用型編程語言,由吉多·范羅蘇姆創造,第一版發布於1991年。可以視之為一種改良(加入一些其他編程語言的優點,如面向對象)的LISP。
Python的設計哲學強調代碼的可讀性和簡潔的語法(尤其是使用空格縮進劃分代碼塊,而非使用大括弧或者關鍵詞)。
相比於C++或Java,Python讓開發者能夠用更少的代碼表達想法。不管是小型還是大型程序,該語言都試圖讓程序的結構清晰明了。
與Scheme、Ruby、Perl、Tcl等動態類型編程語言一樣,Python擁有動態類型系統和垃圾回收功能,能夠自動管理內存使用,並且支持多種編程範式,包括面向對象、命令式、函數式和過程式編程。其本身擁有一個巨大而廣泛的標准庫。
Python 解釋器本身幾乎可以在所有的操作系統中運行。Python的其中一個解釋器CPython是用C語言編寫的、是一個由社群驅動的自由軟體,當前由Python軟體基金會管理。
Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。並且完全支持繼承、重載、派生、多重繼承,有益於增強源代碼的復用性。Python支持重載運算符,因此Python也支持泛型設計。相對於Lisp這種傳統的函數式編程語言,Python對函數式編程只提供了有限的支持。有兩個標准庫(functools, itertools)提供了與Haskell和Standard ML中類似的函數式程序設計工具。
雖然Python可能被粗略地分類為「腳本語言」,但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。
Python的支持者較喜歡稱它為一種高端動態編程語言,原因是「腳本語言」泛指僅作簡單程序設計任務的語言,如shell script、VBScript等只能處理簡單任務的編程語言,並不能與Python相提並論。
Python本身被設計為可擴展的。並非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C、C++、Cython來編寫擴展模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內。
因此,有很多人把Python作為一種「膠水語言」使用。使用Python將其他語言編寫的程序進行集成和封裝。在Google內部的很多項目,例如Google應用服務引擎使用C++編寫性能要求極高的部分,然後用Python或Java/Go調用相應的模塊。
《Python技術手冊》的作者馬特利(Alex Martelp)說:「這很難講,不過,2004年,Python已在Google內部使用,Google召募許多Python高手,但在這之前就已決定使用Python。他們的目的是盡量使用Python,在不得已時改用C++;在操控硬體的場合使用C++,在快速開發時候使用Python。」
Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」,也因此它和擁有明顯個人風格的其他語言很不一樣。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法。這些准則被稱為「Python格言」。在Python解釋器內運行import this可以獲得完整的列表。
相關推薦:《Python教程》以上就是小編分享的關於python是一種什麼類型的編程語言的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
❺ 范凱的個人觀點
來自范凱的個人博客 因為看到一篇討論PHP,Python和Ruby的編程語言討論貼,就說說我的PHP,Python和Ruby之路吧:
我2000-2001年用PHP用了兩年,那還是第一次互聯網泡沫時期,到2001年後期,Servlet/JSP流行,然後我就發現:你說用PHP寫的東西,都會被人鄙視。當時我們其實也用Java了,只不過用Java寫後端的消息隊列。
2001年後期泡沫破滅,我跑去做企業應用,就主要寫Java寫了很多年,中間2003年開始做JavaEye網站,到2006年用Rails重寫JavaEye之前的3年,用的是phpbb搭建的,所以PHP也斷斷續續一直用到了2006年。
以我2000-2006年總共六年多的使用體驗來說,我對PHP真的是深惡痛絕之,但凡做一個稍微大一點的系統,代碼就很容易失控。2002年以後,我曾經一度以為PHP這個東西快死掉了,那個時候大家都言必稱J2EE和.net了。結果Web2.0之風襲來,大家又發現J2EE太重,PHP又死灰復燃了,我其實很詫異現在PHP居然又變得如此流行。從技術上來講,PHP是個很爛的東西,但它門檻低,易部署,普及率高,好找人,實在是互聯網時代的VB,打不死的小強。
Python我大概是04-05年迷戀了一年左右,研究過Zope,plone,後來還看過wxPython,曾經一度想用Python寫JavaEye網站。記得04年Rails出來之後,還很長一段時間被我深深鄙視過。
但後來我去杭州拜訪potian,被他的Rails實踐經驗說服了,之後我和他以及其他人在JavaEye上面有一個很長的討論貼,討論Rails的運行機制,最後我又被他說服了。然後我還不死心,研究和比較了Rails和Django,不得不死心了,後來還曾經幾次想用Python,每次都死心的很徹底,現在就徹底不考慮Python了。
就算你不用Rails,作為一個程序員,我也強烈建議你學習一下Ruby,僅僅因為可以開拓你的思維就很值得了。因為Ruby的語法很強大很好玩,是現代語言版本的smalltalk,算是很原汁原味的面向對象編程語言,你學習了Ruby以後,你就會發現,原來Java/C++所謂的面向對象就是TMD的山寨版本的面向對象,原來面向對象還可以這樣玩阿。
PHP用一句話來總結就是:quick and dirty
Python用一句話來總結就是:quick and clean,but not convenient for web development
Ruby用一句話來總結就是:code for fun and quick for web
補充一下吧:為什麼我當初用Rails來寫JavaEye網站:
在選擇用什麼工具開發JavaEye網站的時候,唯一的指導標准就是:用最少的人力,最少的時間開發JavaEye網站,並且後期維護和持續升級,乃至重寫的時候,代價最小。
首先排除Java和C#,代碼太多太麻煩;
其次排除PHP,項目一大,代碼一多,代碼的管理很成問題,PHP缺乏一個起碼的包管理機制;
當時重點考察Python和Ruby,因為有豆瓣的先例,開始很傾向於Python,而且我那個時候對Python比較熟悉,還曾經痴迷過一段時間的wxPython,對Zope和plone也有一些研究。
但後來比較了Rails和Django之後,就傾向於Rails了,差距實在太大了,而且當時Django很不成熟,在很早期的版本。其實即便現在Django和Rails的差距也沒有縮小過。
但讓我最終下定決心的是potian在05年就大規模使用Rails的實際工程經驗,我曾經去杭州就我比較質疑的問題當面請教過他,和他談過以後,就決定用Rails了。
應該說,我當初用Rails的決定很英明! 在四年以前,當我開始鼓吹Hibernate,抨擊EJB的時候,遭到的是群起而攻之的場面,但是不到一年之後,Hibernate已然得到了普及和大多數Java開發人員的認可;
在三年以前,當我開始贊譽spring的時候,spring還面臨著EJB3的陰影,以及EJB2對其不登大雅之堂的指責,然而不到一年的時間,spring已經成為絕大多數Java開發人員的首選;
在兩年以前,我極力希望宣傳webwork,唱衰JSF,時至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF還在靠廠商死挺著;
而當一年之前我開始採用RoR開發JavaEye的時候,RoR的置疑之聲還甚囂塵上,但當我在今年初預言07年下半年RoR在國內會被廣泛接受的時候,很多人已經笑不出來了;
今年我預言些什麼呢?我覺得會是AJAX技術走出PC的時代,證據就是iphone,與此相關聯的事情就是REST架構的流行。
但是這篇文章裡面我想談的卻不是我預言的水平準不準,而是想談Java真的會因為RoR的流行而過時嗎?目前在web開發主要應用在兩個大的領域,互聯網和企業應用,我們分別來看一下:
一、互聯網領域
互聯網領域第一大動態語言是PHP,第二第三分別是ASP和Java。在中小型互聯網應用當中,PHP的王者地位不容動搖,但在大型應用當中,Java是目前主流的選擇,特別是電子商務類型的應用,例如阿里巴巴就從早期的PHP轉變到Java,從前的eachnet也是如此。造成這樣局面不是沒有原因的:
1.中小型互聯網網站強調開發速度,維護成本,以及入門快速和部署成本,PHP是最合適的選擇;用Java則顯得過於笨拙,開發慢,維護成本高,入門周期長,部署麻煩;RoR開發速度最快,維護成本最低,但是RoR入門速度沒有PHP快,部署成本比PHP高。因此中小型互聯網網站主流還是PHP,但RoR能夠占據一定的份額。
2.大中型互聯網站強調穩定性,性能,大規模代碼的組織能力,而開發效率則退居次要地位,有些應用如電子商務對事務有很高的要求,顯然Java是最合適的選擇;PHP的代碼組織能力最差,RoR次之。
在互聯網領域,Java從來就不是主流,並且Java的適用領域和RoR不太重合。我們甚至可以這樣說,RoR現在在互聯網領域取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
二、企業應用領域
目前企業應用領域第一大語言是Java,dotnet其次。企業應用採用的技術和行業有很大關系:例如金融行業,電子政務行業一般只採用Java。dotnet發展了6年尚且沒有進入企業高端的應用,RoR在短期之內也很難取代Java的地位。
在企業應用領域,Java是主流,並且Java的適用領域和RoR也不太重合。我們也可以這樣說,RoR將來在企業應用領域要取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
至此,我想Java程序員大可以松一口氣,RoR目前有哪些不適合的場合呢:
1.對事務要求非常高的場合
RoR還是很簡單的單資料庫事務控制,缺乏精細的事務控制功能,當然也不支持跨資料庫的分布式事務。因此對於事務要求嚴格的大型電子商務網站,部署復雜的分布式資料庫場景顯得力不從心。當然也許有些plugin可以提供這些功能,但是從目前的功能完備性和成熟度來看,還不夠。
2.處理大量遺留資料庫的場合
ActiveRecord的威力很大程度上來自約定,大量命名糟糕的遺留資料庫會對RoR造成比較大的障礙。
3.龐大的項目團隊,對開發速度要求低的場合
例如日本外包項目,團隊龐大,個體開發速度要求低。但是對於代碼規范要求嚴格的項目。
雖然RoR不會取代Java,但不意味著作為程序員的你可以固步自封。即使在工作當中用不上RoR,多看一點新的技術,對於開闊個人視野也有很大的好處。 挺有意思的現象
記得過去還沒有創辦JavaEye的時候,在技術社區裡面推廣Hibernate(也算不上是推廣,只是和別人交流Hibernate),就有一大批人酸酸的跳出來說,你們今天學習這個明天學習那個框架,全都是跟風,這些框架都是浮雲,真正JDBC這種基礎知識才是實力的,我就用JDBC,我用的一直很好,我完全沒有必要去學習Hibernate……
每當看到這種話,我就覺得特別好笑,用一個我發明的說法叫做「牛逼哄哄的露怯」。沒有人逼你學習Hibernate,你不樂意關心Hibernate,那就繼續用JDBC好了,這個世界從來都不是非黑即白的。
其實這種人的心態很有意思。他一方面眼紅人家學習新的技術,另一方面自己又不想花時間和代價去學習,所以恨不得所有的人都不要去學習新技術,這樣他心裡就感覺很安全了,正因為如此,他就總是要時不時跳出來打擊一下別人,表面上很牛逼,其實虛弱的內心掙扎一覽無余。
如果想把技術作為終身職業,那麼對於技術人員的起碼要求就是不能固步自封,要始終以開放的心態接受新技術。
打好基礎知識固然重要(重要到根本無需你一遍又一遍的祥林嫂),但是不接觸新技術,新思路,新的理念,很快就會被淘汰掉。
當然學習新技術也不是盲目的什麼都學習,什麼流行學習什麼,而是根據自身的需要,有選擇的學習。例如Java Web框架有很多很流行的,Struts,Webwork,Spring MVC,Tapestry,JSF,主流的就有5個,盲目的學習者就是人家說什麼他就學什麼了。而聰明的學習者應該對這些東西都去接觸一下,從中選擇一個值得自己投資時間成本去學習的框架。例如對這五個框架我都涉獵過一遍,最終我把時間花在了Webwork上面,事實也證明我當初的投資是正確的。
我學習ruby on rails有很現實的需要,其實即便拋開現實的需要,我也認為如果有空,Java開發人員有必要學習一下,原因是:
1、ruby語言和rails框架的社區力量正在以驚人的速度增長,甚至已經進入爆炸式繁榮的前夜,這不是曇花一現的現象,而是一個時代開始的象徵。
2.從我這段時間學習的情況來看,ruby語言有足夠的學習深度,我原來以為自己一個很快速的上手,然後就很精通了,但是ruby不像PHP那種方便麵,其知識的廣度和深度都讓我感覺這是一個完整的知識體系。也正因為如此,ruby生命力會很長。
3. ruby和rails是非常非常Unix-like的東西,經常和操作系統提供的功能有深度的依賴,這和Java這種不依賴操作系統,什麼基礎設施都自己捲起袖子自己創造的理念相比,非常非常的不同。這樣做會帶來一個很大的好處,很多在Java裡面解決方案很復雜的問題,在ruby方案中就很簡單可以搞定,相比之下,讓Java顯得頗為大而無當。
不過ruby和rails也樹立起了一堵牆,這堵牆就是Unix操作系統,要學好我,你就先跨越Unix這堵牆吧。呵呵,這也是為什麼rails core team清一色的MacOSX的原因了。
不過我覺得這是好事,我本人是Unix fans,樂意見到這種現象,況且憑借我多年深厚的Unix功底,在ruby fans中,我又站在了一個很高的起點上領跑了。
想學好ruby嗎?先在你的電腦上面安裝MacOSX/ubuntu作為開發環境咯。 孟岩最近寫了一篇博客:
Ruby 1.9不會殺死Python
這篇文章很有點標題黨的意思,所以在JavaEye論壇很快被水掉了,只好鎖貼:
但我個人對於孟岩的觀點是不敢苟同的。首先我並不同意所謂魔幻語言和簡約語言的分類。其實Martin Flower論述過這個問題,他是用「人性化介面」和「最小介面」來區分編程語言的風格化差異的。
其實不用我多說,Martin論述的挺充分了。強把Ruby和C++歸為魔幻一類,其實並不準確,因為Ruby的魔幻語法和C++相比,最大區別在於:
C++的魔幻語法會導致代碼的可讀性變差,而Ruby的魔幻語法會導致代碼的可讀性大大提高。
不論是matz本人,還是整個Ruby社區,Rails社區諸多開源項目的作者,抑或整個Ruby和Rails開發者社區,在一個編程哲學問題上是高度統一的,這就是:
強調程序員的快樂編程,追求人性化編程,在代碼的可讀性上面有偏執的追求,拒絕難以閱讀的代碼和難用的API。也就是所謂的coding for fun!
所以你看無論是Rails,rake,rspec,甚至移植自lucene的ferret,都鮮明的體現出來這種特點,就是API簡單好用,讓你寫的代碼像英文文章,自然流暢,輕松愉快。要是哪個Ruby框架的API復雜晦澀,在Ruby社區簡直沒法混,大家根本不買他的帳,這也是為什麼Ruby應用於DSL領域這么熱的根本原因。
對於ruby程序員來說,這種追求編程人性化的哲學理念會潛移默化影響程序員,讓他不知不覺把代碼的可讀性越寫越好。對於程序員來說,誰不想coding for fun呢? 而當你品嘗到了coding for fun的樂趣,又怎麼會輕易拋棄?
所以Ruby受程序員歡迎的根本原因還是在於它是一種能給你帶來編程樂趣的語言。 有人說,robbin你說了那麼多RoR的優點,你啥時候說說RoR的缺點阿?你說的缺點肯定比別人說的更客觀。沒辦法,為了表現出來我不是一個RoR粉,只好總結點缺點,以饗RoR黑子們:
Ruby和Rails的一些缺點的總結:
ruby的問題我覺得主要是:
1.ruby本身的性能是比較差的,無法直接做一些計算密集型的任務
比方說大量的分詞運算、語料訓練什麼的,用ruby寫是不行的
2.ruby的C擴展很難寫
正因為ruby性能差,所以很多情況下要依賴C寫的底層庫,但是寫ruby的擴展C庫是很困難的事情。一方面沒有特別多的資料介紹,你能參考的只有《Ruby Hacking Guide》,另外一方面Ruby是帶有GC的語言,C又是沒有GC的,所以如果你對ruby的GC機制沒有特別清楚的了解情況下,寫C擴展會出現意想不到的問題:比方說你寫的程序邏輯沒有任何問題,但是和ruby配合起來就會不定期的出現錯誤,這就是你C程序的某個賦值變數可能會被ruby GC以你意想不到的方式銷毀。
3.ruby的C擴展庫質量不高,容易出現內存泄漏問題
正因為上面的原因,很多第三方的C擴展庫質量不好,很容易出現內存泄漏問題,這是一個很頭疼的問題,你很難定位,也很難解決,只能盡量避免使用第三方擴展C庫。
Rails的問題我覺得主要是:
1.特別容易出現命名沖突
你自己寫的代碼裡面給類增加的方法,動不動就和Rails給類擴展的方法名稱沖突了。這種錯誤很隱蔽,很難發現。這也是ruby語言動態性帶來的一個負面影響
2.Rails每次升級API變動都比較大
Rails升級是不太考慮向下兼容性的,所以每次升級的話,可能你很多代碼都要改,更糟糕的是很多Rails插件特別喜歡以hack rails的方式來擴展Rails功能,那麼Rails一升級,插件的兼容性幾乎肯定是不行的,這個是比較痛苦的事情。
3.Rails的view方面還是比較原始的erb拼接字元串方式,像JSP那樣原始,沒有一個類似Java的velocity/freemarker那樣的頁面模版庫,所以寫helper動不動要用字元串去拼html片斷,如果是特別復雜的view需要拼的話,代碼就會寫的很醜陋。
當然總體來說,RoR還是讓我感覺非常滿意的,特別適合互聯網應用。 從無到有剛開始做一個網站或者一個產品,要非常聚焦,沒有旁的多餘功能,只有一個做的極其牛X的核心功能,牛X到別人沒有辦法模仿你,於是網站開始嶄露頭角;
等核心功能成功以後,網站開始聲名鵲起,為了擴展用戶規模,產品開始多元化,各種各樣時髦功能,各種各樣用戶要求的功能紛紛上馬,於是用戶規模開始快速擴張;
等用戶規模已經起來之後,開始聚焦商業目標,於是刪繁就簡,開始砍掉與商業目標不符合的枝節功能,加強和商業目標符合的核心功能,網站進入健康的商業循環;
大部分網站都可以做到第一個階段,但其中大部分都會倒在第二個階段,而邁過第二階段能夠做到第三個階段的就鳳毛麟角了。到了第三個階段,一個產品才真正開始成熟起來,才具有頑強的生命力,在IT垂直領域裡面,JavaEye處於第二個階段,需要向第三個階段轉變。
也曾經盲目的想把JavaEye的規模做到行業最大,於是上了各種各樣的產品和功能,很多都沒有細化和雕琢,現在想來都有些多餘,而符合商業目標的核心功能又用力不足。現在總算想明白一個道理:規模最大又如何?還是不賺錢。所以接下來怎麼做就很清楚了。
另外一條思路是做平台,互聯網的未來生態系統肯定是由平台和內容提供商構成的,你要麼做平台,要麼做內容提供商。但在IT垂直領域,用戶規模和市場空間過於狹小,平台沒有足夠的空間生存,所以這條路不通。不要企圖做大而全的門戶,不要企圖做無所不包的平台。
定位好目標,不要做無關的功能,突出符合商業目標的核心功能和產品,足矣!
❻ 什麼是程序設計
程序設計是給出解決特定問題程序的過程,是軟體構造活動中的重要組成部分。程序設計往往以某種程序設計語言為工具,給出這種語言下的程序。
程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。
任何設計活動都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設計也不例外。
在計算機技術發展的早期,由於機器資源比較昂貴,程序的時間和空間代價往往是設計關心的主要因素;隨著硬體技術的飛速發展和軟體規模的日益龐大,程序的結構、可維護性、復用性、可擴展性等因素日益重要。
(6)編程的哲學擴展閱讀
程序設計的步驟:
1、分析問題:
對於接受的任務要進行認真的分析,研究所給定的條件,分析最後應達到的目標,找出解決問題的規律,選擇解題的方法,完成實際問題。
2、設計演算法:
即設計出解題的方法和具體步驟。
3、編寫程序:
將演算法翻譯成計算機程序設計語言,對源程序進行編輯、編譯和連接。
4、運行程序,分析結果:
運行可執行程序,得到運行結果。能得到運行結果並不意味著程序正確,要對結果進行分析,看它是否合理。不合理要對程序進行調試,即通過上機發現和排除程序中的故障的過程。
5、編寫程序文檔:
許多程序是提供給別人使用的,如同正式的產品應當提供產品說明書一樣,正式提供給用戶使用的程序,必須向用戶提供程序說明書。內容應包括:程序名稱、程序功能、運行環境、程序的裝入和啟動、需要輸入的數據,以及使用注意事項等。
❼ 什麼是多範式編程語言,其中的「多範式」是什麼意思
所謂編程範式(programming paradigm),指的是計算機編程的基本風格或典範模式。借用哲學的術語,如果說每個編程者都在創造虛擬世界,那麼編程範式就是他們置身其中自覺不自覺採用的世界觀和方法論。我們知道,編程是為了解決問題,而解決問題可以有多種視角和思路,其中普適且行之有效的模式被歸結為範式。比如我們常用的「面向對象編程」就是一種範式。由於著眼點和思維方式的不同,相應的範式自然各有側重和傾向,因此一些範式常用『oriented』來描述。換言之,每種範式都引導人們帶著某種的傾向去分析問題、解決問題,這不就是「導向」嗎?如果把一門編程語言比作兵器,它的語法、工具和技巧等是招法,它採用的編程範式則是心法。編程範式是抽象的,必須通過具體的編程語言來體現。它代表的世界觀往往體現在語言的核心概念中,代表的方法論往往體現在語言的表達機制中。一種範式可以在不同的語言中實現,一種語言也可以同時支持多種範式。比如,PHP可以面向過程編程,也可以面向對象編程。任何語言在設計時都會傾向某些範式,同時迴避某些範式,由此形成了不同的語法特徵和語言風格。抽象的編程範式須要通過具體的編程語言來體現。範式的世界觀體現在語言的核心概念之中,範式的方法論體現在語言的表達機制中。一種語言的語法和風格與其所支持的編程範式密切相關。
❽ 計算機起源的哲學
縱觀人類歷史,最接近計算機的是算盤,因為算盤需要人工操作,所以算盤實際上被認為是計算器。另一方面,計算機通過遵循一系列稱為軟體的內置命令自動執行計算。
其中集成電路最重要的影響在於為個人計算的新時代鋪平道路。隨著時間的推移,它開辟了可能性的運行過程–所有電路晶元上的郵票大小的數以百萬計的動力。本質上,它使我們無處不在的手持設備比最早的計算機強大得多。
❾ 哲學與編程能有關系嗎
有關系。
1、哲學的發展需要現代技術,包括編程;
2、編程技術的創新和應用需要哲學思維。
❿ python是什麼樣的編程語言
python是什麼編程的高級語言?
Python是一種面相對象、解釋型的計算機程序語言,並已成為學習數據科學、虛擬現實和人工智慧的首選編程語言,其設計哲學是「優雅」,「明確」,「簡單」。易上手,及時反饋的特點成了很多入門編程世界的首選。同時Python也是一種相當高級的語言,擁有豐富和強大的第三庫,可引用各種模塊並很輕松的連接在一起。眾多社交網站如Reddit, 豆瓣,知乎,Dropbox, YouTube,果殼等都是由Python完成。
最初對python的印象是在紀錄片《互聯網之子》中Aaron Swartz從MIT的圖書館截取的那些文件資料用的程序就是用python寫的,當時對python心生盪漾,但很快就灰飛煙滅,因為沒有後續聯接和交集。
個把月前我看到一個python基礎班,當時還不知道Python是什麼樣的編程語言(即使到現在也還不完全了解Python具體可以做啥),從哪裡來要去哪裡,完全不了解的情況下按了報名鍵。我自認為的優點是盡力為自己的行為買單,且只能是默默的,不可讓一時沖動太聲張,也不能恬不知恥的說那是epiphany,而是盡量去探詢已成事實的一二。
培訓班不上課,沒有講義和資料,只分配任務和引導卡片,剛開始也會心有戚戚焉,在白紙上亂畫我還得知道怎麼握筆呢,可是在鍵盤上亂敲肯定不會有驚喜,錯誤提示都看不懂,別說去修Bug。程序裝了卸,卸了裝,操作也是胡亂使用添加,電腦最終無法忍受這樣的主就自動癱瘓裝死,只得我重裝系統又如獲新生,也算如實貫徹了打小的信念「生命在於折騰」。厚著臉皮長大的人是天生被上帝眷顧著的,基本不會心生『不好意思』的念頭,不懂就問同學嘛!一個不行換另一個,哪怕被認為問了「愚蠢」的問題。匍匐著向前,只要方向對了,那也是進步吧!
就像學外語著得把身處周圍的環境變數調整過來,讓自己置身在那個世界中去感受和徜徉,身上細胞的張合大小,呼吸的進出頻率也慢慢跟上節奏。除了Python本家,編譯程序(Windows上我使用Atom, MAC使用TextWrangler)和運行終端(Windows PowerShell 或Terminal)外,接觸最多的就是 Github, Google 還有新歡Markdown (MOU)。
——-Github 是世界上最大的代碼存放網站和開源社區,副名是:最大的同性交友網站,因其界面設計很容易對號入座。盡管那原是Geek的天地,如今越來越多的其他門派弟子也加入其中,大家都帶著靈敏的嗅覺,看哪好就往裡鑽。他是協作項目最好的實現平台,支持異地,不同電腦的項目更新,特別是不同動作之前的區別和個別動靜的比較清晰可見,操作人性化。很多人在上面寫書,協作翻譯,項目管理、設計資料庫、科研項目數據及個人簡歷都放上面,還有人把自己的健身記錄也放上面。據說有公司招聘還需要看應聘者的github賬號。最最重要的是一切都是免費,只要你想。(盡管有收費的,那是針對個別私人想要數據保密的公司)。之前在別處看到github這個詞就當是熟悉的陌生人,熟悉「github"這6個字母組成的單詞,但完全不知道那是什麼樣的世界。現只是輕輕推移了那扇門,門縫里漏出的光都覺足夠耀眼並思忖著想探尋更多。
-——Google 本不需要多提,原來也是每天在使用。可Google貌似與Python有真感情,每次搜索打Python開頭的關鍵字,出來的第一條結果往往就是正確答案且出自Google自家,比Python的官方文件還顯情真意切。
-——Markdown 人稱寫作神奇,是我刻意關注並想收入囊中的工具,想讓她陪伴著我寫下去,目前還有待開發。
如他程序Python基本命令零容錯,標點符號,大小字母,縮進都有嚴格的規定,更別提邏輯關系,循環迭代,有一處不對就報錯。對小白來說修Bug的時間會比寫程序的時間還長,修復一個bug,報出新的bug已經算是一種進步了。在編程時,若習慣了這些嚴苛的標准到不是非常難,錯一次磕一下頭,同一個錯多犯幾次,就多磕幾次,即使擦破頭皮反正不至於亡命天涯,總歸能牢記於心。當從程序世界抽離自己回到現實世界,真感覺對待其他事是不是太隨意了。至少我打這些文字的時候根本沒注意「的」和「地」的區別,逗號和句號看心情而定,習慣了新段落前不空兩格。工作中仔細的程度沒法用尺衡量,也不會有程序直接報錯,免不了能略就略,可以將就過去就不願多費心思,短期可能沒有意外,總歸長久不了,埋下的地基是作為將來向上的支撐。自從學習編程以來,已開始反思,雖還沒改進多少,可像顆釘子被扎著總覺不適,不時提醒自己。
作為一門高級語言,靈活性和包容性對第三方庫有著無限的吸引力。據說C++用200行命令,Java的40行而Python只需20行可實現同樣的功能。雖然基本命令的嚴苛像個固執的老學究,但若掌握了要領,成了武林高手,各種技巧靈活運用,自由發揮,蓋世武功盡情發揮。只要有本事,任你翻雲覆雨,去到『風所到達的地方』。
Python的一大特點是代碼只在命令運行時才會被檢查執行,即使隱藏了錯誤,若沒運行到,永遠發現不了。很像身體或任何世間體制內的事,大家只關心呵護眼見為實,真實的隱藏只被激發時才被注意到。為了掃清後顧之憂,我們使用『及時反饋』策略,就是碼幾行程序,馬上print出來,看效果如何,而不是等敲完所有的程序,才發現一團亂麻卻不知如何進行手術。這是平時學習很好借鑒的地方,走一段路得停一下檢查是不是在正確的道上,一方面可及時調整姿態,重要的是用小小的可見成果作為的漫漫前方道路的鼓勵。
如果我的回答對您有所幫助,記得點亮採納哦,謝謝啦!