国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 頭條 20多年後,我仍愛著PHP和JavaScript!

20多年後,我仍愛著PHP和JavaScript!

Mar 24, 2023 am 09:03 AM
php javascript

二十多年過去了,仍有許多人對PHP和JavaScript情有獨鍾。

在過去的二十年間,從C 到Common Lisp,從Java 到Python,從C 到TypeScript,我在工作中用過十多種程式語言,但我卻偏偏對那些品質(zhì)堪憂的語言情有獨鍾。

為什麼說品質(zhì)堪憂?因為 PHP 和 JavaScript 會讓人詬病的地方確實不少:PHP 是一門型別鬆散的語言,所以經(jīng)常孕育出糟糕的程式碼, JavaScript 和 Node.js 也基本上是這樣。

即便這樣,我還是很喜歡用 PHP 和 JavaScript 來程式設(shè)計。

Python 很好,但 PHP 確實更容易使用

PHP 誕生於上世紀九十年代中期,年齡甚至比許多程式設(shè)計師還大。我是從 2000 年初開始接觸 PHP 的,當時它剛從版本 4 過渡到版本 5。後來,我開始在自己編寫的 CodeIgniter ZendFramework 框架中編寫應(yīng)用程式。

在我看來,PHP 之所以能夠保持長青、多年過去仍無衰老跡象,主要原因就是它被嵌入到了全球各地的新舊應(yīng)用程式當中、也被嵌入不分老少的開發(fā)者頭腦當中。有些人用過幾年,有些人用了幾十年,PHP 都在他們心中留下了深刻印象。開發(fā)者不會消失、寫出來的商業(yè)程式碼也沒有消失,所以 PHP 依舊健在。而且有趣的是,Python 其實誕生於 1991 年,比 PHP 還要早。而且雖然生命週期更長,但 Python 一直沒能達到 PHP 目前的高度。

為什麼會這樣?

從個人觀點出發(fā),我覺得跟 PHP 相比,Python 使用起來更麻煩。這個問題在 Python 3 中有所改善,但退回 15 年前,Python 還沒有 PHP 中開箱即用的那些「花俏功能」(函數(shù))。很多功能必須手動安裝,否則就沒用。

而且長期貫穿 Python 語言的另一個老大難問題,就是其中的間隔語法。這種由代碼間的空格數(shù)決定分隔關(guān)係的語法讓很多人望而生厭。很多程式設(shè)計師喜歡以自己喜歡的方式分隔程式碼,而且完全受不了程式語言本身在這裡動腦筋,而在這點上,PHP 就做得很好。

PHP 和 JavaScript 哪些面向讓人著迷?

此外,PHP 和 JavaScript 還有更多讓人著迷的地方,具體包括以下幾個面向。

真正做實事的人在用

怎麼理解PHP 和 JavaScript 對真正做實事的人大有用處?也就是說,對於那些能理解商業(yè)需求、快速迭代,並有大量開發(fā)維修專案經(jīng)驗的人來說,PHP 和 JavaScript 這兩種語言可謂是必需品。

多年的發(fā)展讓它們和自己的生態(tài)一同成長

PHP 8 可不是你太奶奶用過的PHP3,而ECMAScript 12 也不是你太爺爺寫過的JavaScript。這些老古董們所依賴的生態(tài)系統(tǒng)可沒有原地踏步。像是 CPAN、PECL、npm 這類的工具讓其他語言的發(fā)展捲了起來。 JavaScript 一直以來都是創(chuàng)新的溫床,帶動了新典範和框架的層出不窮。

它們的品質(zhì)常被其他因素彌補

這類「品質(zhì)堪憂」的程式語言當初可並不是因為它們的優(yōu)雅而出名的。它們更可能是在速度、部署難度、可延展性、工具、開發(fā)社群、框架,或是平臺等方面更勝其他競爭者一籌。

我比較偏好PHP 則是因為它的CGI-bin 模式,它允許分塊重構(gòu)遺留程式碼庫,也提供了簡單易用的快取和擴充方式,而且,開發(fā)者也完全不需要擔心資源外洩。

更有趣

這些語言即使是在一些基本問題上都能出狀況,這也意味著用它們程式設(shè)計總會帶給人們做實驗的感覺。能夠用不優(yōu)雅的語言寫出優(yōu)雅的程式碼??總是會讓人享受到成功的滿足感。

在這些語言面前眾程式設(shè)計師人人平等

這些語言對程式設(shè)計師們的背景要求並不嚴格,即使是一無所知的小白都能在幾天內(nèi)讓一個真正的網(wǎng)站跑起來。我當年就是一路從複製貼上基礎(chǔ)程式碼段一路成長到用PHP2 和PHP3 寫出完全屬於我自己的網(wǎng)站,而現(xiàn)在的我也能夠用我積累的經(jīng)驗回報社群,幫助那些剛?cè)腴T的初學(xué)者們,這一點讓我感到非常自豪。

對十二歲小孩或剛從代碼新兵訓(xùn)練營畢業(yè)的年輕人所寫的程序代碼不屑一顧,這種自大並不可取。正是因為這些使用者擁有多種教育背景,才讓不甚完美的程式語言擁有了更友善、更活躍的社群環(huán)境。

沒有什麼能阻擋你寫出好程式碼

#

無論是 PHP、JavaScript、Lua,或是 Perl,這些語言都提供了函數(shù)、變數(shù)、類別、頭等函數(shù)等行之有效的工具,有的還額外提供了 trait 和原型式繼承。而優(yōu)秀的軟體則需要有產(chǎn)品定位、軟體設(shè)計、命名和設(shè)計模式,透過在靜態(tài)分析或單元測試中強化不變性,為開發(fā)者提供快速有效的回饋循環(huán),以及一個良好的團隊交流環(huán)境。這些要素可完全不依賴任何的程式語言。對於 JavaScript 和 PHP 來說,它們提供了可靠的函式庫、實用的靜態(tài)分析工具,以及出色的 IDE 支持,你甚至會發(fā)現(xiàn),它們在工具方面比許多更「優(yōu)質(zhì)」的程式語言還要強大。

我愛遺留程式碼庫

遺留程式碼庫意味著產(chǎn)品效能的有保障,也意味著我能在其上做出更即時且有效的優(yōu)化改進。對我來說,再也沒有什麼事情比和其他使用者一起優(yōu)化一款產(chǎn)品更美好了。

推薦學(xué)習:《PHP影片教學(xué)

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在PHP中獲取當前的會話ID? 如何在PHP中獲取當前的會話ID? Jul 13, 2025 am 03:02 AM

在PHP中獲取當前會話ID的方法是使用session_id()函數(shù),但必須先調(diào)用session_start()才能成功獲取。 1.調(diào)用session_start()啟動會話;2.使用session_id()讀取會話ID,輸出類似abc123def456ghi789的字符串;3.若返回為空,檢查是否遺漏session_start()、用戶是否首次訪問或會話是否被銷毀;4.會話ID可用於日誌記錄、安全驗證和跨請求通信,但需注意安全性。確保正確開啟會話後即可順利獲取ID。

php從字符串獲取子字符串 php從字符串獲取子字符串 Jul 13, 2025 am 02:59 AM

要從PHP字符串中提取子字符串,可使用substr()函數(shù),其語法為substr(string$string,int$start,?int$length=null),若未指定長度則截取至末尾;處理多字節(jié)字符如中文時應(yīng)使用mb_substr()函數(shù)以避免亂碼;若需根據(jù)特定分隔符截取字符串,可使用explode()或結(jié)合strpos()與substr()實現(xiàn),例如提取文件名擴展名或域名。

您如何執(zhí)行PHP代碼的單元測試? 您如何執(zhí)行PHP代碼的單元測試? Jul 13, 2025 am 02:54 AM

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

如何將字符串分為PHP中的數(shù)組 如何將字符串分為PHP中的數(shù)組 Jul 13, 2025 am 02:59 AM

在PHP中,最常用的方法是使用explode()函數(shù)將字符串拆分為數(shù)組。該函數(shù)通過指定的分隔符將字符串分割成多個部分並返回數(shù)組,語法為explode(separator,string,limit),其中separator為分隔符,string為原字符串,limit為可選參數(shù)控制最大分割數(shù)量。例如$str="apple,banana,orange";$arr=explode(",",$str);結(jié)果為["apple","bana

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復(fù)制副本,因此互不影響;引用類型如對象、數(shù)組和函數(shù)存儲的是內(nèi)存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時間,包括獲取當前時間、測量執(zhí)行時間、操作時間點與持續(xù)時間及格式化解析時間。 1.獲取當前時間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時鐘可能不單調(diào);2.測量執(zhí)行時間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時間點(time_point)和持續(xù)時間(duration)可相互操作,但需注意單位兼容性和時鐘紀元(epoch)

如何將會話變量傳遞給PHP中的另一頁? 如何將會話變量傳遞給PHP中的另一頁? Jul 13, 2025 am 02:39 AM

在PHP中,要將一個會話變量傳到另一個頁面,關(guān)鍵在於正確開啟會話並使用相同的$_SESSION鍵名。 1.每個頁面使用session變量前必須調(diào)用session_start(),且放在腳本最前面;2.在第一個頁面設(shè)置session變量如$_SESSION['username']='JohnDoe';3.在另一頁面同樣調(diào)用session_start()後通過相同鍵名訪問變量;4.確保每個頁面都調(diào)用session_start()、避免提前輸出內(nèi)容、檢查服務(wù)器上session存儲路徑可寫;5.使用ses

PHP標頭位置不起作用 PHP標頭位置不起作用 Jul 13, 2025 am 02:08 AM

遇到header('Location:...')不起作用的問題,常見原因及解決辦法如下:1.提前有輸出導(dǎo)致header失效,解決方法是確保跳轉(zhuǎn)前無任何輸出,包括空格、HTML或echo;2.include或require文件中存在多餘輸出或UTF-8BOM字符,應(yīng)檢查文件編碼並保存為“UTF-8無BOM”;3.建議在跳轉(zhuǎn)前使用ob_start()開啟輸出緩衝,並配合ob_end_flush()延遲輸出;4.跳轉(zhuǎn)後務(wù)必加上exit阻止後續(xù)代碼執(zhí)行;5.確保header()函數(shù)調(diào)用位於所有輸出之前。