日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

工作幾年,先后接觸c/c++,python,lua,dart,JavaScript,java等各種語言,記錄下對于一個編程語言的理解,今天分享一下我自己的心得,這并不是一個標準,不認同還請不要責怪筆者。如果感覺對你有幫助,筆者不勝榮幸!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

對一個編程語言的理解,應該關注兩個方面

一、語言特性

語言特性由編譯器具體實現(xiàn),具體包括:

1. 強類型vs弱類型

強類型就是類型很硬,不太接受轉換

比如c++就是強類型,不同類型轉換需要各種cast

JavaScript就是弱類型,一個變量,一會數(shù)字,一會字符串,一會對象都沒問題

2. 靜態(tài)類型vs動態(tài)類型

靜態(tài)類型:程序運行前確定變量類型,需事先聲明或者由編譯器推導

動態(tài)類型,程序運行時才進行類型綁定和檢查

3. 靜態(tài)語言vs動態(tài)語言

程序在運行時可以更改代碼結構,比如JavaScript隨時給一個對象添加成員或者添加函數(shù)

4. 值類型vs引用數(shù)據(jù)類型

JavaScript中除了基本數(shù)據(jù)類型外,其他都是引用類型,所以變量賦值后其實指向的是同一對象

總結:變量聲明時是否需要指定類型->靜態(tài)類型vs動態(tài)類型

聲明后的類型能否相互轉換->強類型vs弱類型

程序運行時,能否改變對象內部結構->動態(tài)語言vs靜態(tài)語言

但,所有這些都不算數(shù),對于dart語言

既可以編譯成二進制,AOT,又可以解釋運行

變量聲明既可以指定類型,也可以dynamic聲明不指定類型

不支持反射,所以是靜態(tài)語言

類型不可隨意轉換,是強類型語言

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

二、運行環(huán)境

運行環(huán)境就是runtime,包括虛擬機或者真實的操作系統(tǒng),需要注意的有

1. 編譯運行vs解釋執(zhí)行

編譯型:源代碼->編譯器->可執(zhí)行代碼

解釋型:解釋器讀取源代碼,編譯,然后運行。

區(qū)別僅僅是源代碼翻譯成目標代碼的時機不同。

c/c++是編譯型,各源文件編譯成obj,后經過連接器鏈接為可執(zhí)行文件,后操作系統(tǒng)加載執(zhí)行

js,python是解釋型,先編譯為字節(jié)碼,后由虛擬機加載執(zhí)行。

要注意編譯單位:c/c++是以文件為單位,nodejs和python同樣,但網頁中js是以代碼塊(<script>分割)獨立翻譯,執(zhí)行,但各代碼塊共享變量

2.?異步編程模型

nodejs是單線程異步模型,異步模型導致回調地獄問題,后出現(xiàn)await,async,以同步編程方式來編寫異步代碼。更好維護

3. 垃圾回收

只管使用,不用操心內存釋放。

越高級語言,開發(fā)者越不需要關心底層,c/c++,不需要關心匯編指令,但是需要負責內存的申請和釋放,而java,js,dart等現(xiàn)代化語言,開發(fā)者不需要關心內存問題,這是語言發(fā)展的必然。

學習C/C++編程知識,可以關注博主,希望文章對你有幫助。

總結

以上是生活随笔為你收集整理的资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。