娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月07日(星期二)

正在發生

2018年01月07日 | lisp語言有什么特點_lisp語言總結詳細分析

發布者:TranquilBreeze 來源: 電子發燒友網關鍵字:LISP 手機看文章 掃描二維碼
隨時隨地手機看文章

在有些人看來,lisp是種“反智”的,違反人類自然語言邏輯的語言,它只在數理邏輯上擁有一定意義。事實證明了它只能在小范圍普及使用,但不妨經常有人對它推崇備至并宣傳。

對LISP語言不同觀點以及看法,我覺得應該要勇于實踐實踐,學了再自己做判斷。沒有自己思考和實踐,不要輕易相信或者排斥任何觀點。這些觀點的唯一作用就是提供了你一個看事物的新角度和調查的起點。

本文只是個人的對LISP語言特點以及總的概括,如有不足之處還請見諒。

關于LISP概述

程序語言本身就不是為了符合自然語言的邏輯而去開發的,它是為了開發為人所用的軟件的,它是為了更容易兼容機器,讓機器理解是首要考慮,Lisp也一樣,數理邏輯只是一套方法,Lisp是活生生的具體實現了,顯然比那些高逼格的理論要來得實際得多,這一點比數理邏輯要高級吧。

早期的程序員用Lisp的可是很多的,只不過后來隨著軟件規模的擴大,需要擴充的東西比較多,而Lisp是以簡潔著稱的,由于它的開發環境實在太簡陋,所以越來越不能被多數程序員接受。其實它一樣可以開發現有的軟件的,只要你愿意去用,它絕不輸現在的任何流行語言。

人們推崇它很大一方面是受了某些人的宣傳然后為了滿足一下自己的好奇心,就去嘗試了。真的有那么多人推崇Lisp嗎?真的有用它去開發東西嗎?這我無法回答。?
?

看法一:(支持)

1、lisp高級又基礎,lisp沒有python或者ruby里那些便利的數組或者hash操作函數,很多時候,lisp的數據只由2個部分組成:

(AAA 、 BBB)

第一個元素AAA稱為car部分,剩下的另外一半。不管有多少,稱為cdr部分。也就是對稱的第二個元素。這叫con cell元素。很多復雜的數據結構,比如數組,hash表,紅黑樹,二叉樹都是由它實現的。你說它不基礎?但是lisp又很高級,c語言的一個特性是,機器效率雖高,但是人工效率很低。而lisp不同,《黑客與畫家》中指出,lisp只需要c語言十分之一的代碼就能實現同等的功能。而lisp甚至能直接操作cpu的寄存器,這是哪種高級虛擬機語言能實現的?

2、lisp很簡潔,用一句話就能概括lisp的語法:

例如(A B C)

用圓括號括起來稱為一個列表,列表中第一個原子被視為函數,其他原子被視為變量。而由單括號‘前導的元素什么也不視為(不求值),只按原樣返回。

完了,就這么簡單。剩下的都是細節。要知道真理都是很簡潔的,比如e=mc2,真理總結出來都這么簡單。所以lisp很強。

用多數人可以理解的話說,lisp沒有”保留字“。我們知道每種語言包括c但是有保留字的。這意味著2點:

(1)他們的處理語句和數據是分開的,不一樣的。

(2)他們都是被限制了的

但是lisp沒有保留字,為什么呢?你看多數語言像c++,Java根本就沒有所謂符號(symbol),ruby有符號,但是應用很少。lisp不同,lisp大多數原子都是符號。比如(print atom-1 atom-2),每一個符號可以連接著一個函數定義,或者一個變量定義,這個例子就是對atom-1,atom-2 兩個符號進行求值,找出他們的變量定義然后交給print這個函數去運算。你可以把它調過來。(atom-1 print atom-2) ,這個例子就是對print,atom-2 兩個符號進行求值,找出他們的變量定義然后交給atom-1連接的函數去運算,區別可能是print可能是一個系統預先定義好的函數,而atom-1可能是用戶自定義函數。所以說lisp是沒有保留字,也不需要保留字的。

所以我們就可以看到了,lisp一個有名的特點,數據和語句是一樣的,是怎么實現的了。非常簡單,同樣的東西,你把它放在列表第一個,就是函數,否則就是變量,如果加上單引號不求值,那就是數據。如此,lisp也可以實現非常強大的宏系統,這也是獨一無二的,其他語言都不能,因為他們都不可以把數據和語句區別開來。簡單的說,宏就是接受一個參數,然后返回對應的代碼,插入到調用宏的位置

( defmacros (args)

`(defun aaaaa(,args)

;; process ))

這樣的東西

把對應的代碼恢復到對應位置,只要求值,就和普通的代碼無異。所以lisp可以。而其他語言不可以。你返回一段語句,這段貨的數據類型是啥?它就是數據,不是語句。要運行它,eval它,然后只能得到一個結果(以我對ruby粗淺的了解,它已經比java靈活太多了)。不像lisp可以替代源代碼中的一個部分,比如替代函數中的一部分,這段代碼可以操作參數,其他語言可以么?

但是lisp這么強大,為什么1958年就被發明,半個世紀以來,lisp沒有廣泛的應用?

lisp并非沒有得到過應用。在教學領域,lisp是一門非常廣泛使用的語言,那些不急功近利的學校比如麻省理工,入門課都采用schme(一門lisp的方言),而在商業領域,有名的《黑客與畫家》的作者P··G在創立世界第一家互聯網企業viaweb時,使用的是lisp。lisp之所以沒有被廣泛應用,是因為它太強大了,這么說似乎有點欠揍,但強大就意味著靈活,而靈活就意味著幾乎沒有語法。那些商業公司想要的只是穩定,把工作完成,他們并不在乎你用什么語言開發。他們才恨不得每一行都是釘死的,所有人都用一個名字寫函數,因為這樣可以花更少的錢維護。

ruby之父松本行宏曾這么說:

而lisp的問題在于,只要你掌握了s表達式,想寫出什么樣的程序都行,這意味lisp是沒有語法的。這在應用上帶來了一定的麻煩。我不希望自己的語言是沒有語法的。所以ruby加入了一定的語法限制。

而在程序員的角度來說,以我看來,大多數人似乎不那么聰明,多數人喜歡用一種死語言(java/c++)也無可厚非,因為他們的思維可能就是死的。lisp可能更適用于強大的黑客,自己或者少數人每個人都很強的類型,它是一種黑客語言,而不是一種商業語言。

綜上所述,lisp是靈活的,天馬行空的,沒有限制的。在我看來,一旦使用lisp,就不會想在去使用其他語言。lisp有一種和諧的美。我認為,Fortran,c++,java這樣的東西是應需而生的,他們是為了滿足當下的需要和硬件條件而設計使用的。而lisp從開始就是為了迎合真理和美而生。所以50年過去了,lisp還沒有過時。lisp就是計算機界的真理,記得漫畫《風云》中有這么一句,因為不管到哪里,真理(或者是類似的詞)就是真理,所以絕世好劍的形狀在哪都是一樣的。lisp也是一樣。以后可能會出現別的名字的語言,也可能不叫lisp,但是真理總是真理,所以絕世好劍的形狀總是一樣的。

但是從現實的角度來看,我們要編程,如何運用lisp呢?

emacs使用emacs lisp作為架構語言(不僅僅是擴展語言),這是絕佳的學習lisp的途徑

common lisp和scheme作為lisp最有名的兩門方言,廣為人知。但是在教育領域應用比較多。實際用途似乎比較少

GNU組織使用guile作為gnu通用擴展語言,但是我沒聽說哪有它的應用。

時下最火的clojure,你可能聽說過,這是一種運行在java虛擬機上的lisp,編譯為java字節碼,具有和java一樣的速度,使用它可以無縫使用jdk里的所有庫和java的無數第三方庫,現在你知道它為啥火了。clojure的一個子集可以編譯為javaascript運行在瀏覽器中,這帶來了無盡的可能,盡情的享受那些愚民們的成果吧,node.js貌似也行。

看法二:(不支持)

認為Lisp永遠成不了編程主流語言。他們認為Lisp未能成為主流的根本原因是這一語言是反人性的,它的先進是對于機器的先進,就像二進制對于計算機來說是先進的一樣。人是生物,對事物的需求都有著多樣性的需求,人類的所有語言對漂亮的形容詞從來不止一個,對顏色的要求從來就不止黑白亮色,所以在數字上選擇了十進制而不選擇二進制,這是最基本的人性。Lisp使用S表達式抹平了一切多樣性,禁止人類數千年來不約而同選擇的的A+B這樣的中綴表達式規則,違反了人性,所以受到了廣大開發者的不接受。

簡單說就是Lisp語言違反了人類人性中對事物多樣性的需求而不能成為編程語言中的主流。

lisp語言特點

LISP為函數式程序設計語言,所有運算都能以函數作用于參數的方式來實現。

LISP沒有命令式語言程序中常見賦值語句和變量,重復的過程可以使用遞歸的函數調用來表示,并不需要使用循環模式。

LISP是古老的函數語言、弱類型、動態推斷,其代碼本身就是各種列表。每一個表項均可以儲存任何類型的數據如數字、函數、符號或一個子表等,在編碼時,可以隨時操作以更新列表。

LISP核心的操作符只有7個操作符:quote、atom、eq、car、cdr、cons、cond。前三者quote、atom、eq用于符號的推斷;car、cdr、cons操縱表格;cond負責分支判斷。這種簡潔定義,非常接近圖靈機原型的純函數式語言,是現代語言完全無法比擬的。

LISP作為弱類型這優點相對缺點則是運行效率的低下。原始定義簡潔的缺點使到大型開發工程變得困難,自底層到高層,自二維表查詢到面向對象,使用者需要嵌入更多的函數來實現,致使LISP眾多方言的衍生。

Lisp優勢:

- 不尋常的語法對智商是一個過濾

- 語法糖特別適合對編輯器優化, 語言本身并沒有給你任何不可跨越的限制。

- Emacs配置本來就是個人行為。代碼量不會很大,都放到同一個目錄下grep就行了。所以也不存在多人開發導致質量下降的問題。

#e#

各種Lisp系語言大檢閱

主要特色:

CommonLISP : lisp系集大成者, 工業化強度的大型語言。 擁有理論上最高的表達力, 非常復雜, 學習難度極大。 喜歡的人捧到天上, 覺得它是一切語言的終點, 不喜歡的人惡心死, 覺得各種混亂各種冗余, 缺失美感。 (工業化語言)

Scheme: 一種以靜態作用域和強制嚴格尾遞歸實現為特色, 遵從的理念是編程語言發展不該越來越復雜,不斷堆疊新的功能和特色, 而是應該不斷消除缺陷和限制, 以使得不再需要添加功能和特性就能達到目的。 追求數學上的美感, 跟CommonLISP在很多理念上完全相反, 相對簡單,但是極端靈活。 由于缺少實用的庫而長期淪為教學語言, 很少用于實用。 (算法語言)

Clojure: 一種新興的lisp, 起于jvm平臺, 現在已經移植到了.Net 和 Node.js 因為根植于幾個非常流行的平臺,使得其具有得天獨厚的優勢, 市場占有率節節上升, 直追前兩大lisp. 語法上充分利用了多種括號,使得括號總數減少了。同時追求工業化強度和數學美感之間的平衡。 啟動時間過長是最大的缺點。

newLISP: 劍走偏鋒的獨特lisp, 有大量創新內容, 同時保留一些在lisp系進化過程中被拋棄的設計(可能是過于大膽或者過于靈活副作用太大等原因),這些魔鬼設計的組合形成了一個強大獨特的動態腳本語言系統。最大特色是語言好小,整個只有200k.

AutoLISP:曾經作為AutoCAD軟件的內置腳本而成為最多人使用的lisp,但是語法古老, 缺陷很多,性能低下,代碼丑陋, 世人關于lisp的種種不實的評論很多是由它而來。 現在已經被淘汰, 新版本AutoCAD用CommonLISP.

EmacsLISP: Emacs編輯器的擴展腳本語言, 現在依然存活的最古老的lisp語法之一, 因為編輯器而為世人所知。 但是跟AutoLISP一樣,是一種古老的落后的lisp語言。

各個有影響力的分支:

Scheme的分支:

Racket: 以Scheme為基礎, 增加了大量實用的語法和庫, 使其成為一種更實用的語言而不僅僅是教學語言, 完全兼容低版本的scheme, 大部分兼容高版本的scheme.

IronScheme: .Net上的Scheme實現, 在R6RS標準的95%之上, 增加了跟.Net庫的互操作和集成, 使得其成為一種實用的嵌入.NET程序的靈活腳本語言。在ngen的幫助上, 它成為啟動最快的.Net lisp.

Clojure的分支:

ClojureCLR: .NET的DLR上的Clojure,并不是對jvm版的翻譯,而是根據.Net而定制的實現。

ClojureScript: 把Clojure編譯為javascript以運行在瀏覽器或Node.js. 是clpjure的子集

社區和文檔:

CommonLISP 社區對新人很不友好, 充滿歧視。 教程很多, 但是很古老,文檔多但是都過于龐大, 讓人望而生畏。

EmacsLISP 社區教程豐富細致

Scheme社區像大學, 文檔都像論文一樣

Clojure社區非常友好, 同時文檔書籍以很快的速度增加著

Racket文檔龐雜,社區沒什么人, 并且設計者很有閉門造車的意味

newLISP社區在沒落,文檔不完整, 但整體方向沒問題。

流行程度:

CommonLISP (30幾位)

Scheme (40幾位)

Clojure (50-100位)

其他(不在前100)

關鍵字:LISP 引用地址:lisp語言有什么特點_lisp語言總結詳細分析

上一篇:lisp函數大全詳解
下一篇:基于STM32自碼DS18B20驅動程序

推薦閱讀

本文在遵循Modbus協議的基礎上,闡述了Modbus的兩種傳輸模式和串口通訊程序的設計實例,并給出了VB語言的程序清單。基于Modbus協議的串口通訊程序----Modbus協議簡介MODBUS協議支持傳統的RS-232、RS-422、RS-485和以太網設備。許多工業設備,包括PLC,DCS,智能儀表等都在使用Modbus協議作為他們之間的通訊標準。Modbus 協議是應用于電子控制器上的一種通...
1月4日,全球權威影像質量評測機構DxOMark發布了《A recap of 2018 and best wishes for the new year!》,對2018年所評測的智能手機作了年度總結。2018年,DxOMark共發布了對31款智能手機的評測,覆蓋高中低端產品線。華為P20系列手機DxOMark年度總榜  2018年各大手機廠商推出的智能手機在拍照方面提升非常巨大。DxOMark談到了首...
據特斯拉官方微博,中國制造的特斯拉Model 3將于1月7日下午15:45正式對外交付。要知道,從工廠開始建設,只用了10個月時間,可以說,特斯拉上海超級工廠的建設以及Model 3車型的國產化,速度嘆為觀止。據特斯拉官方信息顯示,國產Model 3的售價29.9萬元起。這個價格對國內的特斯拉粉絲還是很有誘惑力的。不過,更讓人期待的是,近日,有國內知名券商發...
這些年從來沒有像2020年,我們如此期待舊年結束、新年到來。疫情籠罩的2020,復雜多變的產業形勢,將越來越成為時代特征的不確定性進一步放大。企業在面對產業未來、創新研發、資產管理等方面遇到的問題,越來越多樣化、個性化。 面對諸多不確定性和復雜多變的產業形勢,在測試測量行業和資產管理領域,益萊儲/Electro Rent在租賃服務及測試資產管理方面...

史海拾趣

問答坊 | AI 解惑

【藏書閣】數字萬用表電路圖集

[ 本帖最后由 wzt 于 2010-3-5 16:48 編輯 ]…

查看全部問答∨

【FPGA告警信息】無波形文件輸入

Warning: Can\'t find signal in vector source file for input pin |whole|clk10m原因:因為你的波形仿真文件( vector source file )中并沒有把所有的輸入信號(input pin)加進去,對于每一個輸入都需要有激勵源的…

查看全部問答∨

WinCE5.0內存映射文件操作的疑惑

WinCE5.0內存映射文件操作的疑惑, 有這么一段程序: // 設定內存映射大小、偏移量等參數 __int64 qwFileSize = 0xD59F80;//文件的最大字節數13.3MB(0xD59F80)/64MB(0x4000000)/128MB(0x8000000) __int64 qwFileOffset = 0;      & ...…

查看全部問答∨

錄音中的噪音怎么去除!

請各位幫忙:     能不能用軟件的方式處理這種噪音! 或者其他的方式! 其他方案! 謝謝!…

查看全部問答∨

學嵌入式如何入手()給分

我不是計算機科班畢業。硬件知識一點不懂,不過軟件沒問題(自學的)。現在在一家軟件公司作開發,想學嵌入式。怎么入手,看什么書?先學什么?詳細點。給分了…

查看全部問答∨

ADC采集的數據怎么那么不準

我在他的AD上外部接了干電池, 我把電壓調整到2.8V,采樣250次后 我看數據, 發現數據 從3470----3420 的數據都有,真的叫人郁悶 請問香主 他的誤差有那么大么.我把電路貼出來, 不知道那位采的數據精確點啊…

查看全部問答∨

【為C2000做貢獻】SVPWM資料全集+代碼

這里基本上包括了網上所有有用的SVPWM資料,只要一鍵就可以得到所有的資料。看咱們論壇這方面的資料比較就上傳上來供大家學習! 具體內容如下: 代碼如下: [ 本帖最后由 fxw451 于 2011-4-12 15:05 編輯 ]…

查看全部問答∨

STM32的USB問題

我使用ST提供stm32f105-07_f2xx_usbhost_lib.zip的USB庫在我的板子中進行測試時,板子作為從設備。用它提供的例程從設備作為HID設備時,我不管如何插、拔USB時,電腦都能識別設備。當從使用VCP例程時,使用JLink進行仿真,點擊RUN時,插入USB設備, ...…

查看全部問答∨

2個FPGA例程,LED流水燈和4位計數器

例程已經在板子上跑過了,附帶詳細解釋 syn_cnter_4.qpf4位計數器led_w.qpfLED流水燈,方向固定…

查看全部問答∨
小廣播
最新嵌入式文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 东海县| 济宁市| 赣州市| 嘉鱼县| 惠水县| 金湖县| 周口市| 瑞金市| 珠海市| 鞍山市| 万年县| 三都| 报价| 长兴县| 巴中市| 唐山市| 马龙县| 邢台市| 桐庐县| 兴宁市| 麟游县| 巍山| 明水县| 嘉鱼县| 乐安县| 盐亭县| 水富县| 延长县| 仁布县| 普洱| 乃东县| 松潘县| 井研县| 绩溪县| 铅山县| 大同县| 和顺县| 天柱县| 遵义县| 随州市| 桦川县|