摘自
按:「什麼都略懂一點,生活就會多彩一點。」 程式語言、開發工具、資料庫、網頁前端甚至是美工設計,只要能夠幫助我們get things done,能夠使我們成為乙個更好的developer,都不妨一試,技不壓身麼。
事實上,有很多你可能正在學習的很酷的新事物,似乎每12.8秒就有一項新技術出現,那到底為什麼你要花費空閒時間學習一門像sql這樣又老又臭的語言呢?讓我告訴你我的理由。
計算機系的學生們在獲取他們的學位時被教授數以百計的技術和理論概念,其中的許多資訊並不能直接應用於每日的程式設計任務,但sql介紹給學生們能夠在不同平台間轉移的基本概念,不同的平台擁有共通的詞彙表和工具組,學生們能帶著它們去任何地方。
儘管每個資料庫廠商實現他們自己的擴充套件,但廠商的每個新版本都符合ansi/iso sql標準。標準相容儘管很微妙,但也使你能夠攜帶著你的知識從乙個平台到另乙個平台。如果你學習sql,你將會預備好從乙個資料庫轉移到另乙個。
我的好朋友和商業夥伴開玩笑說他成為乙個資料庫管理員是因為sql已經35年沒有變化了,這大部分是真的。廠商實現他們自己的擴充套件並最終使其加入到 sql標準,但sql的核心沒有改變。一旦你理解了sql的基礎和關係原理(並不那麼難),你會發現你能夠繼續依賴這些知識,新增那些你本來依靠其他工具 或開發者來實現的特性和功能。
在乙個應用程式中僅有幾個地方能夠實現效能增益 - 表示層、應用層和儲存層。事實是,你的**已經寫得很好並且很好地調整過,從那裡獲取效能增益會好比從石頭中獲取血液一樣艱難。另一方面,資料庫是乙個容 易做一些簡單改變(新增乙個索引,稍稍修改乙個查詢)並看到巨大效能改善的地方。在花費了我的職業生涯的可觀部分,以乙個應用程式開發者的身份盯著資料庫 分析器之後,我能為之證明。從程式**中獲得效能改善是可能的,但現代的框架和工具通常都編寫良好,因此資料庫通常是乙個更好的地方(也被認為是更容易的 地方)為效能改善找到低懸的果實。
《程式設計師的修煉之道》一書激勵開發者每年都學習一種新 語言,並不是因為環境在持續地變化,而是因為學習新的語言向開發者展示了新的模式。思考問題時有不同的思路,並且它們能夠很好地應用於不同的解決方案(通 過鑽研函式式程式設計我最近學了不少)。學習sql能夠教會你以集合而非迭代的方式思考。長期來看,這會改變你與資料打交道時的思維方式,使你的資料庫**得 到改進。
你是否曾經試圖和語言相同但說非常不同方言的某人交談?在工作之外,跨越語言的藩籬交流會 很艱難,但當乙個專案的成功依賴於此則完全令人抓狂。學習sql會在你與資料庫管理員團隊交流你的目標時給予幫助,他們不需要解析你的意思,你可以確切地 告訴他們你的需求。最終誤解更少了,事情能夠更快地完成,你不再會是「那個讓人抓狂的開發者」。
我討厭這樣 說,但學習sql可能意味著當旁邊隔間的ted在裁員季被解雇時你能保住你的工作。你擁有越多的技能,你能履行越多的工作職能,你就變得對現雇主越有價值 (還有未來的雇主)。如果你能同時與資料庫團隊和開發團隊一起工作,你就成為了乙個有價值的資源,兩個團隊都要依靠你獲得成功。
和普遍的觀念相反,sql不是難以學習的語言。sql是一種不同的思考方式,這是肯定的,但它並不難。那只有記錄在ansi/iso標準中的為數不多的 指令、操作符和資料型別。雖然廠商會新增他們自己的特性,但仍有一部分精簡的核心知識你能學習並且應用到你去到的每個地方。
資料庫對於解決很多問題是現象級的工具,但對於解決更多的問題則是糟糕的問題。換言之:你也許不應該用一把錘子去挖掘壕溝。通過學習和理解sql,你將能夠做出更好的決定並將表現糟糕的**移出資料庫。事實上,你將能夠在問題形成之前就將其發現。
一旦你理解了sql,你會更好地領會乙個關係型資料庫管理系統的侷限性。你會知道應用程式的哪個部分能夠安全地存在於乙個資料庫,而哪部分需要被移動到 不同的分層。一些資料驗證應該和資料存放在一起,而另一些則不應該。理解sql如何工作會幫助你決定哪些規則應該保留在資料庫裡。
執行中的應用程式難以故障排除眾所周知。越多的複雜度和分層被涉及到,就越難以為乙個應用程式排除故障。對於sql的良好理解讓快速地將存在於資料庫中的問題隔離變得可能。換言之:理解sql使將問題定位在你的應用程式的多個不同分層中的某一層變得簡單。
給讀者的建議:如果你做資料庫開發但不能很好的掌握sql,將走許多彎路。所謂掌握sql不僅要能根據需求寫出sql,並且還要清楚sql在資料庫的內部主要執行演算法。
分享按鈕
開發者應該學習SQL的九個理由
摘自 按 什麼都略懂一點,生活就會多彩一點。程式語言 開發工具 資料庫 網頁前端甚至是美工設計,只要能夠幫助我們get things done,能夠使我們成為乙個更好的developer,都不妨一試,技不壓身麼。事實上,有很多你可能正在學習的很酷的新事物,似乎每12.8秒就有一項新技術出現,那到底為...
Android開發者應該深入學習的10個
1.android團隊提供的示例專案 如果不是從學習android sdk中提供的那些樣例 開始,可能沒有更好的方法來掌握在android這個框架上開發。由android的核心開發團隊提供了15個優秀的示例專案,包含了遊戲 影象處理 時間顯示 開始選單快捷方式等。2.remote droid rem...
開發者應該具備的15個程式設計好習慣
這是國外程式設計師al katib總結的一些程式設計習慣。1.動手編碼之前,你需要對要編碼實現的解決方案有乙個正式的或粗略的設計。永遠不要在沒有任何設計的前提下就開始編碼,除非所編 不重要。2.優秀的 文件跟程式語言知識一樣重要。在 原始檔中,為每個主要的 段新增注釋,解釋 的基本邏輯。最好註明程式...