語言,框架等等工具的選擇

2021-08-01 23:39:11 字數 2279 閱讀 8230

背景

新手總會陷入選擇困難症

分析

良好的設計需要專案經驗,需要時間,新手在不明真相的情況下使用會本末倒置陷入非必要複雜設計細節的泥潭。大可使用輕輕輕量的語言或框架或一切工具,解決問題是當務之急,優雅不用急。自己用原始的,樸素的方法解決之,後面有問題自然會發現,經驗有了再順理成章使用設計過的東西

reference

這裡引用鳥哥的乙個文章,針對c++這種複雜設計語言的看法

首先, 這篇文章不是對@左耳朵耗子的c++的坑真的多嗎?一文的反駁, 我只是在我的理解角度說一下我對語言選擇的一些感悟.

關於c和c++的爭論, 由來已久, 從當年linus攻擊c++是恐怖的語言的時候, 就一直沒有停歇, 而就我自己來說,

我對c++的掌握還遠遠不夠, 所以沒有能力來從語言設計角度來對比(我在最初, 也嘗試學過c++, 用過c++, 但後來發現, 我學不好,

用不好, 就放棄了). 所以我盡量避免在這個方面說錯話.

誠然, c++引入了很多的新東西, 如@左耳朵耗子一文所說, 它確實是為了解決一些問題而設計的, 但是問題是我們需要麼?

在我看來, 語言, 或者工具, 它是乙個工具, 它的存在是為了讓我們能使用它們解決問題. 從這個角度講, 乙個語言最大的優點應該是易於上手,

能被快速的掌握, 這樣學習者才不會本末倒置, 花費巨大的精力在掌握」工具」的使用上.

當然, 古話也有雲:」兵欲善其事必先利其器」, 然而c++相比c來說, 並沒有擴充套件更多可適用的場景, 也沒有提公升效能,

更沒有提高多少開發效率, 當然, 從oo來說, 能從設計理念上或多或少影響使用者, 提高**的可維護性. 然而這不是必須的,

因為也有太多的成功的, 可維護性很高的c專案, linux, unix, apache, php…….

我對語言的設計是有一些經驗的, 在我們設計開發php的時候, 最最慎重的就是新語法的新增, 這個過程近乎苛刻, 乙個新的語言特性,

往往預示著不相容, 更多的誤用的可能, 更大的學習成本. 所以本能上我們排斥一些新的語法. 這也是對簡單的一種追求.

相比c, c++提供了更多的新的語法, 新的語言特性, 這也就是說, 需要更多的學習時間, 更大的學習成本. 舉個例子, 大家看看c++

primer有多厚, 看完這些還不夠, 因為還有很多的細節你可能會誤用, 所以又有: 「effective c++」, 「more

effective c++」, 哦, 還有stl, 」 effective stl」等等. 你真的願意為了學習一門語言,

花費如此巨大的精力麼?

如果你覺得學習一門高深的語言, 可以滿足你自己的智商優越感, 那我無話可說, 但我還是要善意的提醒你, 即使你花了大半年, 學完了這些,

你還是什麼都做不成, 因為語言還需要和實際結合, 要真正在實際中使用, 還有很多知識等著你: 「advanced programming

in the unix environment」, 」 unix network programming」 , 對於windows的話,

那要看的書就更多了…

所以, 現在你還覺得你有那麼多的時間學習所有的這些麼? 假設你真的堅持你有時間, 那麼好吧, 我再來提醒你一下, 你所學到的很多東西,

是你這個時候無法理解的. 因為你還沒有實際解決問題的時候遇到一些設計模式上的經驗, 所以你現在是看不懂那些設計模式,

或者一些看似很無用的功能的. 看吧, 多麼矛盾, 學習高階語言需要實際專案經驗, 而實際專案經驗有需要你學習一門語言以後來掌握….

從這個角度上, 我覺得php和c很像, 我學php只買了一本書, 然而也沒看完, 因為乙個tutorials學下來,

我發現我已經學會了怎麼解決當時的需求了… 現在對我來說, 一本php手冊就夠了….

有人會問, 一門很簡單的語言, 學起來這麼簡單, 那後續怎麼成長啊?

或許人性都是如此, 覺得掌握了複雜的東西會比較吊, 然而他們卻忘記了, 還是我剛才的觀點, 語言只是你學習來解決你實際問題,

把你的想法變為實際的工具, 你的成長應該是你在使用它們解決問題的過程中, 解決問題的經驗的成長, 而不是語言的使用技藝的增長.

當你為了精通一門語言, 埋頭閉關三年, 苦讀各種書籍, 終於有一天學成出關的時候, 你卻悲劇的發現, 這門語言已經不流行了…

不知道你作何感想? (寫這段話的時候, 我腦袋裡浮現出, 東成西就中的王重陽出關場景, 嘿嘿)

所以, 不要本末倒置, 選擇你會用的(學乙個易於學習的), 盡快開始解決實際問題吧!

前奏 Python語言開發工具選擇

掌握定向網路資料爬取和網頁解析的基本能力 requests 自動爬取html頁面 自動網路請求提交 robots.txt 網路爬蟲排除標準 beautifulsoup 解析html頁面 projects 實戰專案a b re 正規表示式詳解 提取頁面關鍵資訊 scrapy 網路爬蟲原理介紹 專業爬蟲...

C 測試框架的選擇

c 測試框架的選擇 金慶的專欄 本文以 形式總結了 exploring the c unit testing framework jungle http gamesfromwithin.com exploring the c unit testing framework jungle 一文對各種單元...

C 測試框架的選擇

c 測試框架的選擇 金慶的專欄 本文以 形式總結了 exploring the c unit testing framework jungle 一文對各種單元測試框架的比較,並新增了原文所還沒有加入的google test.並新增了另一項特性比較,即對mock物件的支援。各比較項為 1.加入新測試最...