1. 程式人生 > >2017/7/30

2017/7/30

語法糖(Syntactic sugar),是由Peter J. Landin(和圖靈一樣的天才人物,是他最先發現了Lambda演算,由此而創立了函數語言程式設計)創造的一個詞語,它意指那些沒有給計算機語言新增新功能,而只是對人類來說更“甜蜜”的語法。語法糖往往給程式設計師提供了更實用的編碼方式,有益於更好的編碼風格,更易讀。不過其並沒有給語言新增什麼新東西。舉個例子:在C語言裡用a[i]表示(a+i),用a[i][j]表示(*(a+i)+j),看來語法糖不是“現代語言”才有啊,連我們的老大哥C也有,而且這種寫法簡潔明瞭,也更好懂了。實際上從面向過程到面向物件也是一種語法糖啊,C語言可以通過它的指標、型別轉換,結構實現面向物件的程式設計風格,但是C++更進一步的推廣了這種風格,更好用了,不過到了C#把OO的風格發揮得淋漓盡致。OO的程式設計風格對於面向過程來說是不是一種語法糖呢?如果生硬地照此理解,只有計算機硬體指令才不算語法糖,而其他一切利用編譯器、彙編器將程式碼抽象,和自然語言更相近的手段都算語法糖。現在很多很多程式設計思想,程式設計理論層出不窮,當然,對於學習來說我們是要抓住技術的核心,但對於工程來說如何提高工程質量,如何提高工程效率也是我們要關注的,既然這些語法糖能輔助我們以更好的方式編寫程式碼為什麼要“抵制“呢?我想語法糖和其他程式設計思想一樣重要,什麼duck type,人本介面,最小介面,約定優於配置,其實不都是一些思想上的“語法糖“?不過也並不是沒有反對的聲音,這其中就有圖靈獎的第一個獲得者: Alan Perlis。.net從2.0到3.0到3.5底層CLR並沒有做更新,沒有新增任何新的IL指令,所以C#從2.0到3.0中所有的特性都是語法糖,就算從1.0到2.0,也只有一個泛型不是語法糖,其餘的新特性也都是如此,但是每一次C#釋出新特性的時候我們不得不為之而鼓舞,為之而喝彩。新的語法可以釀造更好的程式設計風格,以前一些難以實現的方面現在也輕而易舉了。需要宣告的是“語法糖”這個詞絕非貶義詞,它可以給我帶來方便,是一種便捷的寫法,編譯器會幫我們做轉換;而且可以提高開發編碼的效率,在效能上也不會帶來損失。

Gradle是目前android主流的構建工具,不管你是通過命令列還是通過AndroidStudio來build,最終都是通過Gradle來實現的。所以學習Gradle非常重要。

目前國內對Android領域的探索已經越來越深,不少技術領域如外掛化、熱修復、構建系統等都對Gradle有迫切的需求,不懂Gradle將無法完成上述事情。所以Gradle必須要學習。
如何學習Gradle?

大部分人對Gradle表示一臉懵逼,每當遇到一個問題的時候都需要從網上去查,這是一個誤區。

Gradle不單單是一個配置指令碼,它的背後是幾門語言,如果硬讓我說,我認為是三門語言。

Groovy Language
Gradle DSL
Android DSL

DSL的全稱是Domain Specific Language,即領域特定語言,或者直接翻譯成“特定領域的語言”,算了,再直接點,其實就是這個語言不通用,只能用於特定的某個領域,俗稱“小語言”。因此DSL也是語言。

在你不懂這三門語言的情況下,你很難達到精通Gradle的程度。這個時候從網上搜索,或者自己記憶的一些配置,其實對你來說是很大的負擔。但是把它們當做語言來學習,則不需要記憶這些配置,因為語言都是有文件的,我們只需要學語法然後查文件即可,沒錯,這就是學習方法,這就是正道。

你需要做什麼呢?跟著我學習就行啦!下面步入正題,讓我們來開始學習Groovy的基本語法。
Groovy和Java的關係

Groovy是一門jvm語言,它最終是要編譯成class檔案然後在jvm上執行,所以Java語言的特性Groovy都支援,我們完全可以混寫Java和Groovy。

既然如此,那Groovy的優勢是什麼呢?簡單來說,Groovy提供了更加靈活簡單的語法,大量的語法糖以及閉包特性可以讓你用更少的程式碼來實現和Java同樣的功能。比如解析xml檔案,Groovy就非常方便,只需要幾行程式碼就能搞定,而如果用Java則需要幾十行程式碼。

相關推薦

2017/7/30

語法糖(Syntactic sugar),是由Peter J. Landin(和圖靈一樣的天才人物,是他最先發現了Lambda演算,由此而創立了函數語言程式設計)創造的一個詞語,它意指那些沒有給計算機語言新增新功能,而只是對人類來說更“甜蜜”的語法。語法糖往

啟動tomcat的startup.bat檔案報C:\Program Files\Tomcat 7.0\logs\host-manager.2017-04-30.log(拒絕訪問)

看到拒絕訪問,立馬就應該想到是許可權問題! 右鍵tomcat安裝目錄,點選屬性-->安全-->點選 編輯-->選擇Users(...)-->在Users的許可權(p)下面把沒打勾的都打上,確定關閉後重新開啟startup.bat,就沒有異常和警告資訊

2017-05-30】WebForm文件上傳

clas pre ext config onf javascrip col cep con 用 FileUpload控件進行上傳文件。 <asp:FileUpload ID="FileUpload1" runat="server" /> 屬性 accept="

jqurey 將如2017-5-30轉化為時間戳或者時間戳轉化為日期的js方法

jqurey 將如2017-5-30轉化為時間戳或者時間戳轉化為日期的js方法<script> function datetime_to_unix(datetime){ var tmp_datetime = datetime.replace(/:/g,‘-‘);

2017.6.30 Note

如何 ner 分析 字符串轉換 數組 特定字符 利用 cnblogs logs   1、運用的知識為JS中字符串到HTML標簽的轉化: 使用.innerHTML,如: div.innerHTML = str;   2、主要思路轉換: 切記千萬不可轉牛角尖,轉牛角尖只

每天幹的啥?(2017.7

基本 line 模仿 消息 功能 銷售 bsp col height 我的方向(跟著奪冠走) 我的“一人幹一團”技術方向確定!~因為奪冠團隊和我的想法相同(線下,樣式模板,社群) 1:專註商鋪和公司的展示 2:研究奪冠的API、後臺(他有什麽產品我們都復制,做到0成本)

2017.7.1 mysql安裝與啟動(已驗證可以使用)

界面 all avi 配置 install 服務 毫無 壓力 cnblogs 之前一直用解壓版安裝,啟動mysql服務的時候總是失敗,這次用mysql installer安裝一遍,終於成功啟動。 1.下載mysql installer 下載的32位的,在64位系統運行也

2017.7.1 linux傳建文件

遞歸 創建 filename linu linux 提示 dir tro lena vi xxx.py創建並編輯文件 cat filename 查看文件內容 gedit filename 編輯文件 touch file創建文件夾 ls -ahl rmdir file 

2017.7.2 Note

高效 china 空閑 很慢 表達 關系 一道 什麽 進步 1 form.addEventListener( "submit", addEventListener是每個節點都有的方法,而在監聽submit事件時,其目標是form節點,其他事件綁定的目標都是其本身,但是

2017-7-3

運行 形式參數 消失 調用函數 enter text 類別 寄存器 靜態存儲區 存儲類別小結 從應用的範圍來分: 局部變量: 1.自動變量(auto),即動態局部變量(離開函數,值就消失)2.靜態局部變量(static)(離開函數,值仍保留)3.寄存器變量(register

2017.7.6 ubantu軟件安裝與卸載 編輯器gedit sublime

back 相關 更新 修改 eight logs 命令 edit 分享 windows相關軟甲 ubantu系統安裝軟件命令 1.備份 cp /etc/apt/sources.list /etc/apt/sources.list.backup 2.修改 更

2017.7.6 linux 搭建ssh服務器 scp

inux src linux .com http mage 服務器 ges img z 2017.7.6 linux 搭建ssh服務器 scp

【第四組】典型場景:查看導入的圖片,工作序號:001,2017/7/6

想要 新的 掃描 app 場景 照片 工作 背景 一個地方 場景 工作項序號001:查看導入的圖片,最後修改時間:2017/7/6 1. 背景 1) 典型用戶:羅小歐[主要]、朱小葉[主要] 2) 用戶的需求/迫切需要解決的問題 a. 羅小歐:出去玩拍了好多照片,想要在一個

[第4組]典型場景:圖片分類 工作序號:005 2017/7/6

她在 添加 文字 添加文件 圖片分類 本地磁盤 解決 關於 點擊 場景工作序號005:照片分類1.背景1)典型用戶:白領王女士2)客戶的需求/迫切解決的問題王女士旅遊歸來想要將相機中雜亂無章的照片按景點分好類。3) 假設:a.王女士的照片已經導入到了本地磁盤中b.軟件相關功

2017.7.7 長尾關鍵詞系統優化

名稱 布局 產生 網站 排名 tro 蜘蛛 文章標題 設計 挖掘長尾思路: 1.定位目標用戶 2.思考目標用戶搜索行為 3.用目標用戶搜索詞進行關鍵詞擴展 5118 找出行業20個網站,分析流量來源的關鍵詞 麻辣燙裝修店面 酸辣粉店面裝修 同義詞替換 萬科網站設

[noip模擬2017.7.3]

題解 評測 mes 遞推 include algo ostream mar 第三題 題目名稱擲骰子環島旁邊鐵路歷險 源文件名 dice.pas/.c/.cpp roundabout.pas/.c/.cpp railway.pas/.c/.cpp 輸入文件 d

2017.7.10-2017.7.16

cnblogs except 異常 png bsp 方法 ava http 第四章 本周任務: 1 CS61B lecture1-6+lab1-2+homework1-2 2 瘋狂java講義 第一章-第四章 2017.7.10 打卡 √CS61B lecture

【第二組】項目沖刺(Alpha版本) 第一次每日例會 2017/7/10

修改 圖片 頭像 str 跳轉 ont 遊戲界面 進一步 獲取本地圖片 項目沖刺(Alpha版本)第一次每日例會 開發小組:Hunter 沖刺經理:林貴淵 小組成員:吳澤斌,李明君,劉仁人,林軒宇,張太 (1)昨天做了什麽 1、吳澤斌:做了2個登錄界面和兩個界面之間

【第二組】項目沖刺(Alpha版本)第二次每日例會 2017/7/12

數據庫 布局優化 頭像 二維碼 登錄界面 img 成員 密碼功能 style 項目沖刺(Alpha版本)第二次每日例會 開發小組:Hunter 沖刺經理:林貴淵 小組成員:吳澤斌,林軒宇,張太,劉仁人,李明君 1、每日例會內容 (1)昨天做了什麽 1、吳澤斌:繼續登錄界

華為實習2017.7.16

快的 是我 進行 手動 真的 二次開發 excel 想想 部門 其實今天星期天,但是今天想著晚上的時間把自己在華為的項目稍微說說,順便說說自己的想法。 我在華為上研所,在終端部門,測試部。我的任務主要是用JavaWeb開發一個測試數據收集的一個平臺。 他們其實已經做了一些工