聲明式編程api優(yōu)缺點 sql語言的主要功能是什么?
sql語言的主要功能是什么?不喜歡SQL。是因為它有我喜歡的語言的幾個要素:1.基礎(chǔ)扎實的數(shù)學(xué)基礎(chǔ)SQL的數(shù)學(xué)基礎(chǔ)是關(guān)系代數(shù),你所編譯程序的SQL語句到最后都這個可以英文翻譯為關(guān)系代數(shù)上的運算。這種功
sql語言的主要功能是什么?
不喜歡SQL。是因為它有我喜歡的語言的幾個要素:
1.基礎(chǔ)扎實的數(shù)學(xué)基礎(chǔ)SQL的數(shù)學(xué)基礎(chǔ)是關(guān)系代數(shù),你所編譯程序的SQL語句到最后都這個可以英文翻譯為關(guān)系代數(shù)上的運算。這種功底扎實的數(shù)學(xué)基礎(chǔ)是可以使語言具有良好的道德而合理的邏輯的表達(dá)能力,同時不會只不過一些不合理的Adhoc設(shè)計而實則留坑。(數(shù)學(xué)基礎(chǔ)不強的語言大部分都是很多坑,諸如早期的PHP)另外,你是可以然后再首先發(fā)明很多種SQL的方言(是真的,Google里面就有好幾種)但人性不變,要知道你不能然后再首先發(fā)明關(guān)系代數(shù)。具有類似于性質(zhì)的好幾門語言,我都挺很喜歡,比如說:LISP,背后是λ演算,這個數(shù)學(xué)基礎(chǔ)給了LISP更加強橫無比的表達(dá)能力;(雖說多數(shù)人不再用LISP,但挺值得你去愛了解一下)起碼,LISP給現(xiàn)在各種意見函數(shù)式編程的語言能提供了借鑒模仿;正則表達(dá)式。背后是正則文法。絕大部分也可以在用正則文法定義的語言,都也可以可以使用正則表達(dá)式定義。當(dāng)然,肯定因為正則表達(dá)式太完成,你經(jīng)常有人借著用它來匹配各種編程語言的代碼,這基本上是那肯定要出bug的。原因很簡單,多數(shù)主流編程語言都是『上下文沒有關(guān)系語言』,它是正則語言的超集;BNF,背后是上下文任何關(guān)系文法。這也是我想知道為什么各種編程語言(即使奇怪如C或C#,還包括SQL和正則表達(dá)式)的spec,甚至還不少『標(biāo)準(zhǔn)格式』(如JSON,URI等)的spec都比較喜歡用BNF或EBNF定義。更比較好玩的是,當(dāng)你用BNF定義好一門語言時,還也可以使用一種一般稱編譯器之編譯器(Compilers Compiler)的程序(如YACC及各語言上的移植,ANTLR等)來能生成這門語言的解析程序!我想知道為什么能能夠做到這么大利害的功能?這牽涉到編譯原理的很多知識,但其實歸根結(jié)底,是上下文沒什么關(guān)系文法的數(shù)學(xué)基礎(chǔ)。
2.隨和的語法糖衣SQL以自然語言英語為藍(lán)本設(shè)計,易學(xué)易記,很多非專業(yè)編程人員也能很快地掌握到。(不可能編程但會寫SQL的,我們把他們被稱數(shù)據(jù)分析師(逃))千萬不能當(dāng)做這點是嗤之以鼻的。同樣基于關(guān)系代數(shù),你這個可以基于條件LISP常規(guī)的S-expression來設(shè)計一門有與SQL雖然表達(dá)能力的語言,還可以不設(shè)計和實現(xiàn)JSON來電腦設(shè)計一門有與SQL雖然表達(dá)能力的語言(.例如Mongo DB的JSONAPI,假如你把它看作一門語言的話)但非專業(yè)編程人員可能就就沒這樣很容易上手了。
3.可以解決了重要的問題SQL可以解決了結(jié)構(gòu)化數(shù)據(jù)的查詢和更新完問題。這種能力也讓它在編程界幾乎無處不在。你的手機上很可能跑了起來很多個SQLlite的數(shù)據(jù)庫;你訪問網(wǎng)絡(luò)的很多中等規(guī)模網(wǎng)站,很有可能飛奔很多MySQL數(shù)據(jù)庫。你存錢的銀行,很可能會跑著許多Oracle的數(shù)據(jù)庫。這些數(shù)據(jù)庫都主要注意以SQL以及去查詢和操作數(shù)據(jù)的語言。即便強如Google,也能設(shè)計出有全球擴展性和異地容災(zāi)的分布式數(shù)據(jù)庫F1(見),也得乖乖地需要提供SQL語言的支持。
4.初級聲明式語言SQL通常被j以為是第四代編程語言,語言每過一代意味著什么它有高一個層次的抽象(抽象層次:機器語言匯編語言多數(shù)有高級編程語言SQL)注意抽象的層次和語言是否是杰出的根本不會必然關(guān)系,也不意味著什么高抽象層次的語言可以已經(jīng)得用低抽象化層次的語言。但是初級的抽象而不意味著什么編程人員可以更少地如此關(guān)心基于細(xì)節(jié),更多地不在乎業(yè)務(wù)邏輯的怎樣表達(dá)。不使用SQL時,普通用戶主要注意關(guān)心的是怎么表達(dá)出網(wǎng)站查詢的邏輯,也就互逆于關(guān)系代數(shù)上的乘法運算。當(dāng)然了這種運算如何翻譯成詳細(xì)的執(zhí)行計劃(ExecutionPlan),使用哪些算法和數(shù)據(jù)結(jié)構(gòu)參與高效安全存取和運算則交給了數(shù)據(jù)庫去完成。當(dāng)然,低級用戶也是可以實際各種手段去優(yōu)化SQL的執(zhí)行(比如說表設(shè)計、建立起比較合適的索引、寫出優(yōu)化軟件器沒能良好優(yōu)化的查詢等)。-------------------------(現(xiàn)在是我這邊深夜了,下次再更)
manfest文件的功能?
聲明具體的要求的最少API級別
聲明特別要求的用戶權(quán)限的級別
記錄程序中可以使用的Activity等資源