成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

值得探索以改善編碼風(fēng)格的5種編程語(yǔ)言

新聞
"為什么這段代碼如此混亂? 為什么這個(gè)問(wèn)題很難表達(dá)? 這段代碼到底是怎么回事?"諸如此類的問(wèn)題使我多次尋求編程語(yǔ)言的圣杯。 我還沒有找到圣杯,但是就像每一次旅行一樣,我變得更聰明,更有經(jīng)驗(yàn)。

 "為什么這段代碼如此混亂? 為什么這個(gè)問(wèn)題很難表達(dá)? 這段代碼到底是怎么回事?"

諸如此類的問(wèn)題使我多次尋求編程語(yǔ)言的圣杯。 我還沒有找到圣杯,但是就像每一次旅行一樣,我變得更聰明,更有經(jīng)驗(yàn)。

[[328515]]

長(zhǎng)期以來(lái),程序員一直在尋找向計(jì)算機(jī)表達(dá)自己的最佳方式。 在曾經(jīng)創(chuàng)造的所有語(yǔ)言中,只有少數(shù)發(fā)展成為廣泛的行業(yè)標(biāo)準(zhǔn)。

像我一樣,您可能正在使用經(jīng)過(guò)考驗(yàn)的流行技術(shù),并嘗試使其以最佳方式工作。 但是我們都知道事情不是完美的-它們的缺點(diǎn)會(huì)影響我們的神經(jīng)和耐心。

這是我嘗試過(guò)的語(yǔ)言的簡(jiǎn)短列表,這為我的日常工作帶來(lái)了一些好處。 雖然不是大多數(shù)語(yǔ)言的專家,甚至不是常規(guī)用戶,但我對(duì)這些語(yǔ)言進(jìn)行了很多有趣的嘗試,而且我想認(rèn)為它們只是使我總體上成為一個(gè)更好的程序員。

ML語(yǔ)言(F#/ OCaml)

對(duì)于第一個(gè)條目,我想向您介紹ML系列的語(yǔ)言。 這不是我第一次進(jìn)入函數(shù)式編程(FP)世界。 然而,正是這一點(diǎn)使我對(duì)它的實(shí)際工作方式有了真正的實(shí)際了解。

盡管兩種語(yǔ)言都支持多種范例,但它們最適合于函數(shù)式編程。 它們不像Haskell那樣嚴(yán)格和純凈,因此您可以將您的腳趾浸入函數(shù)式編程風(fēng)格中,而無(wú)需太多的初期掙扎和挫折。

我真的很喜歡通過(guò)匹配和破壞來(lái)控制流程是多么容易。 F#能夠一目了然地可視化函數(shù)的流程。 無(wú)論語(yǔ)言如何,我都會(huì)努力將其納入代碼中。

多虧了ML語(yǔ)言,我在類型的組成和設(shè)計(jì)方面變得更好。 即使F#會(huì)嘗試從您編寫的核心代碼中猜測(cè)您的類型,它也是一種強(qiáng)類型化的語(yǔ)言。

F#非常適合學(xué)習(xí)序列上的功能樣式操作。 這是任何FP第一語(yǔ)言的共同特征。 折痕,地圖壓縮等與FP編程器工具箱中的錘子等效。 易于使用的語(yǔ)法支持著重于此元素,將幫助您訓(xùn)練大腦以了解可以抽象為序列操作的問(wèn)題。

如果您具有OOP(面向?qū)ο缶幊?的經(jīng)驗(yàn),那么學(xué)習(xí)F#是進(jìn)入函數(shù)式編程世界的絕佳的第一步。 如果遇到困難,您總是可以回到日常的對(duì)象和課程。 F#將它們與其他代碼混合在一起,而不必大驚小怪。

如果您具有C#的經(jīng)驗(yàn),則F#與.NET的互操作性也將為您帶來(lái)很大的幫助。 您仍然可以使用可信賴的.NET工具和nuget包。

我只能建議您嘗試一下。 沒有非常陡峭的學(xué)習(xí)曲線,這很有趣。

但是,如果您不害怕陡峭的學(xué)習(xí)曲線,則可以直接跳至:

Haskell

現(xiàn)在,Haskell一直是(現(xiàn)在仍然是)我要時(shí)不時(shí)地挑戰(zhàn)。 即使我從未完成過(guò)任何大型項(xiàng)目,但我始終喜歡與之合作的精神挑戰(zhàn)。

Haskell編程從一開始就是一種殘酷的經(jīng)歷……老實(shí)說(shuō),它仍然是。 Haskell不是一種蓬松的用戶友好型ML語(yǔ)言。 這種語(yǔ)言將迫使您對(duì)FP進(jìn)行編程并正確編程。

您必須正確設(shè)計(jì)類型。 您必須精確地計(jì)劃功能。 而且對(duì)實(shí)現(xiàn)沒有任何欺騙,如果您說(shuō)此功能會(huì)做某事,則必須兌現(xiàn)您的承諾。 沒有一半的實(shí)現(xiàn),沒有漏掉的案例或"其他"。

但最重要的是,沒有隱藏的副作用。 如果您說(shuō)您的函數(shù)將獲得一個(gè)字符串并取回該字符串,則編譯器將強(qiáng)制您兌現(xiàn)您的承諾。 沒有打印調(diào)試信息,沒有讀取用戶輸入。 您說(shuō)過(guò)您會(huì)得到一個(gè)琴弦并只將琴弦還給您,不是嗎?

使用這種語(yǔ)言確實(shí)可以使您的大腦注意所承諾的聲明功能(或方法)的內(nèi)容。

即使這種嚴(yán)格性不能總是很好地翻譯成C#之類的語(yǔ)言,但它會(huì)使您更加了解,并會(huì)促使您謹(jǐn)慎地聲明函數(shù),以便其他用戶不會(huì)感到不愉快。 一兩年后再回到自己的代碼時(shí),這將為您節(jié)省一些咒罵。

我知道當(dāng)我修改傳遞給該方法的任何參數(shù)時(shí),我的大腦會(huì)立即發(fā)出警報(bào)。 我需要那個(gè)嗎? 我是否警告過(guò)潛在用戶該功能會(huì)干擾他/她的數(shù)據(jù)?

當(dāng)我開始學(xué)習(xí)Haskell時(shí),它是一種奇怪的語(yǔ)言。 我已經(jīng)知道Haskell程序員坐在編程象牙塔的頂層。 我還發(fā)現(xiàn),顯然奇怪的生物正在懸停在塔頂頂部上方(笑話歸于ScottW)。

這些人在編程:

LISP系列:通用LISP,Clojure,Scheme

對(duì)于像我這樣來(lái)自C家族的任何人來(lái)說(shuō),這都是一個(gè)真正的陌生人。 第一次困惑地看一下代碼,第一次斜視是由一群大括號(hào)擁抱這些陳述引起的。 啊,回憶!

我進(jìn)入LISP世界的第一步是通過(guò)Clojure。 我只是在書店里瀏覽,當(dāng)時(shí)一本關(guān)于Clojure的書引起了我的注意(出于對(duì)我的愛,我不記得那本書是哪本書)。 我把它帶回家,冒險(xiǎn)開始了。 或者,確切地說(shuō),是一個(gè)天又一個(gè)難題地解決,并試圖了解如何使用該工具的日子。 幾周后我放棄了,一年后又回來(lái)了。 并再次放棄。 然后,我找到了Common LISP,然后再次使用它,但是這次有了發(fā)現(xiàn)我的文本編輯器(也許是操作系統(tǒng))想要的EMACS的附加價(jià)值。

我不記得在這個(gè)周期中什么時(shí)候點(diǎn)擊了。 大括號(hào)融合到背景中,剩下的只是一個(gè)清晰的提示。 如果您在LISP中發(fā)現(xiàn)一件事,那就太優(yōu)雅了。 我絕對(duì)不會(huì)說(shuō)我可以用LISP編寫優(yōu)秀代碼,但是閱讀經(jīng)驗(yàn)豐富的程序員的代碼是一種敬畏和嫉妒的經(jīng)歷。 我希望有一天,我將有技能來(lái)編寫能很好地說(shuō)明自己的程序。

如果我可以證明這些語(yǔ)言的出色表現(xiàn),那么即使我沒有足夠的知識(shí)親自編寫該程序,我仍然可以理解該程序的意圖。

所有這些都?xì)w功于簡(jiǎn)單而靈活的設(shè)計(jì)。 最重要的是,有一個(gè)我所不知道的宏系統(tǒng)。 通過(guò)支持語(yǔ)法構(gòu)造,這使您可以圍繞已解決的問(wèn)題編寫程序。

另一個(gè)重要功能是使用REPL進(jìn)行交互式實(shí)驗(yàn)性編程。 編寫活動(dòng)代碼鼓勵(lì)進(jìn)行試驗(yàn),并允許您在提交給代碼的一種設(shè)計(jì)之前檢查許多想法。

即使我在工作中不使用LISP,它仍然是一個(gè)很好的工具,而且我在經(jīng)常被引用的句子"發(fā)現(xiàn)學(xué)習(xí)LISP將使您成為更好的程序員"中發(fā)現(xiàn)了事實(shí)。 我不知道我是否可以通過(guò)LISP成為一個(gè)更好的程序員,但這無(wú)疑擴(kuò)大了我的視野。

Rust

當(dāng)我處理C ++ pet項(xiàng)目時(shí),我首先發(fā)現(xiàn)了Rust。 我不討厭或鄙視C ++,但是使用它的任何人都知道,有時(shí)C ++可能會(huì)令人討厭。

C ++所提供的復(fù)雜性和自由度令人驚嘆,但也可能使人不堪重負(fù),甚至失去希望……

如果您從未在其中編寫過(guò)中型或大型項(xiàng)目,那么讓我告訴您,它很快就會(huì)變得混亂。

這種語(yǔ)言龐然大物背后的驅(qū)動(dòng)思想是,無(wú)緣無(wú)故應(yīng)該阻止開發(fā)人員用自己的腳射擊……或者恰好是現(xiàn)在出現(xiàn)的20英尺,而您不確定他們是如何到達(dá)這里的。 同樣,您的原始腳在某處,但您不確定該在哪里。

無(wú)論如何。 Rust用RAII范式的嚴(yán)格性和自以為是的AF解決了這個(gè)問(wèn)題。 類似于Haskell的方式,編譯器始終處于工作狀態(tài),并確保您正確構(gòu)建程序。

主要目標(biāo)是:如果編譯,它將正常工作。

用Rust寫作就像與一個(gè)憤怒的教練合作,他會(huì)在一點(diǎn)點(diǎn)滑倒的情況下糾正您。

這是一個(gè)好習(xí)慣,尤其是在您無(wú)法正確設(shè)置內(nèi)存管理的情況下。

每次查看Rust時(shí),Rust似乎都會(huì)得到重大改進(jìn)。 即使它不能代替C ++代替中級(jí)通用語(yǔ)言,還是有一個(gè)好的競(jìng)爭(zhēng)者仍然很不錯(cuò)。

SmallTalk

我的朋友在有關(guān)面向?qū)ο蠛凸δ芊妒降木瓢赊q論中向我推薦了這個(gè)。 在啤酒的充分刺激下,我站在一位功能編程的新手的立場(chǎng)上,他認(rèn)為這種新的范例將解決我所有的問(wèn)題,即使不是世界上的問(wèn)題。

我被一個(gè)簡(jiǎn)單的論點(diǎn)反駁:

試試Smalltalk,看看面向?qū)ο蟮木幊淌欠裾娴臎]有用。

所以我嘗試了并且感到謙虛。 原來(lái),我不知道如何執(zhí)行OO。 Smalltalk是特定的。 大多數(shù)實(shí)現(xiàn):Pharo,Squeak等將為您提供完整的IDE,這幾乎就像是為開發(fā)而構(gòu)建的小型操作系統(tǒng)。

它為您提供了完成任務(wù)的所有工具,但最重要的是,它強(qiáng)烈建議工作流向您展示如何以我所說(shuō)的Smalltalk方式進(jìn)行開發(fā)。

因此,您要發(fā)表評(píng)論,也要編寫測(cè)試。 您需要將對(duì)象和函數(shù)命名和分類為適當(dāng)?shù)膶?duì)象,協(xié)議和包。

叫我瘋了,但是當(dāng)我以正確的方式做事時(shí),我覺得法羅幾乎為我感到驕傲。

事實(shí)證明,正確的方法可以花很多時(shí)間。

語(yǔ)言本身非常簡(jiǎn)單,您可以在不到15分鐘的時(shí)間內(nèi)輕松學(xué)習(xí)語(yǔ)法。 沒有技巧,沒有語(yǔ)法糖。 它為您提供了足夠的工具來(lái)完成工作,因此您可以做到。 您不必費(fèi)心去尋找應(yīng)該使用的語(yǔ)言工具-別無(wú)選擇。 我覺得它可以讓我的大腦將所有精力集中在手頭的工作上。 它對(duì)我有用,也許對(duì)您有用。

后記

我在本文中跳過(guò)了一些語(yǔ)言。 其中一些是如此廣泛,以至于您可能以其他形式(例如Python / Java / C ++ / C#等)看到了它們。

有些人我沒有遵守規(guī)則,即如果您無(wú)話可說(shuō),那就什么也不要說(shuō)(我看著您JavaScript,ekhm)。

有些,例如Ruby,Scala,Perl,我還沒有嘗試過(guò)。 希望以后能對(duì)這些有所了解。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2021-04-19 11:39:04

編程語(yǔ)言PythonJava

2021-03-01 12:20:32

編程語(yǔ)言LinuxPython

2021-03-01 09:32:54

編程語(yǔ)言開發(fā)

2023-12-04 09:00:00

PythonRuff

2015-01-04 13:42:15

編程語(yǔ)言

2020-02-05 17:09:28

編程語(yǔ)言代碼Ruby

2020-09-01 07:38:29

編碼開發(fā)代碼

2020-03-01 17:35:53

編程語(yǔ)言大數(shù)據(jù)程序員

2018-03-13 09:34:30

人工智能編程語(yǔ)言Python

2023-07-12 08:00:00

編程語(yǔ)言開發(fā)

2021-05-28 05:34:06

Golang語(yǔ)言編程

2023-04-06 07:02:18

小眾編程語(yǔ)言

2019-01-09 06:03:15

編程語(yǔ)言開發(fā)Python

2021-05-20 20:56:05

編程語(yǔ)言開發(fā)

2021-04-07 06:46:01

編程語(yǔ)言開發(fā)

2020-12-09 06:17:40

編程語(yǔ)言開發(fā)數(shù)據(jù)科學(xué)

2018-07-19 19:07:33

語(yǔ)言編程語(yǔ)言程序

2020-02-20 20:30:16

編程語(yǔ)言框架

2018-12-05 15:15:37

編程語(yǔ)言編碼資源工具

2020-02-13 16:18:50

人工智能開發(fā)編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕一区二区三区在线观看 | 一区二区三区欧美 | 精品国产精品三级精品av网址 | a级免费视频 | 精久久久 | 国产一区久久 | 久草网站| 一区二区三区av | 一本色道久久综合亚洲精品高清 | 国产69久久精品成人看动漫 | 欧美8一10sex性hd | 国产日韩欧美一区 | 91www在线观看 | 综合网伊人 | 蜜桃一区二区三区 | 这里只有精品999 | 四虎影院在线观看免费视频 | 日本三级在线网站 | 国产精品揄拍一区二区 | 亚洲一区 | caoporn国产精品免费公开 | 欧美日韩久久 | 日美女逼逼 | 中文字幕精品一区 | 国产精品久久精品 | 亚洲国产精品一区二区第一页 | 亚洲一区播放 | 一区二区三区国产好 | 亚洲精品久久久久久一区二区 | 国产精品三级 | 国产三级精品三级在线观看四季网 | xx性欧美肥妇精品久久久久久 | 日日干夜夜草 | 99热播精品| 欧美成人在线免费 | 天天看夜夜 | 欧美福利精品 | 成人免费视频网 | 精品久久久久久亚洲综合网站 | 国产清纯白嫩初高生在线播放视频 | 综合五月|