[導讀]整理/排版:付斌,參考資料見文末 他是不是中國寫代碼寫得最好的,我們不知道; 但可以肯定的是,他一定是寫代碼賺錢最多的那個…… 01 小時候 看到上圖這個靦腆的男孩,你會聯(lián)想到什么? 他是中國第一代產品經理,也是迄今為止最優(yōu)秀的產品經理。 他自稱宅男
整理/排版:付斌,參考資料見文末
看到上圖這個靦腆的男孩,你會聯(lián)想到什么?
他是中國第一代產品經理,也是迄今為止最優(yōu)秀的產品經理。
他自稱宅男,自認天性里就不愛和人打交道,卻是中國互聯(lián)網史上最激烈對戰(zhàn)的當事人;
他打造了中國市值最高的公司,卻說:我就是一個工程師!
雖然已是連續(xù)四年代表,但或許讓身居騰訊董事局主席兼CEO的馬化騰感到最舒服和自在的角色依然是產品經理。
知乎網友曾說:“馬化騰是個無趣的人,大約沒什么有趣的事?!?/span>
每年春節(jié)后開工,他都堅持給每個員工發(fā)紅包。
去年騰訊18歲生日,他又給員工發(fā)了15億紅包!
可能,說他無趣的,是因為他平時的低調吧!馬化騰對自己的評價是,“我們開發(fā)人員、軟件人員都這樣,比較內向,比較喜歡做產品。對懂的東西,我可能說得多點,其他的事,我就不太知道怎么說。”
關于馬化騰寫代碼的水平,網上有一個段子:曾經和pony(馬化騰)一起寫過代碼。當時我、pony、馬克3人擠在一個只有10個位置的房間里,埋頭開發(fā),用的啥語言我忘了。
馬克當時負責寫兩個bug,弄了10個月,沒有一點進展,下樓準備買點瑞士卷吃,消消愁。
回來發(fā)現(xiàn)pony光著膀子,啃著個豬蹄兒,站在陽臺,望著寂靜的夜,回頭冷靜地和馬克說了句:“幫你搞好了。”
當然,這只是個段子。但當年創(chuàng)業(yè)時,公司主頁確實也是馬化騰自己寫的代碼,并親手調試一些小細節(jié)。
為了“養(yǎng)活”這只企鵝,大家想盡了辦法。
“那時我們幾乎什么都做,例如幫人家做一些網站的小項目,包括深圳信息局的郵件系統(tǒng)也是我們做的。
當時馬化騰和張志東都自己親手做網站,公司主頁也是馬化騰自己寫的代碼并親手調試一些小細節(jié)。這是馬化騰當年寫的代碼:
圖片右上角寫著編寫的日期是99年2月21日,21日是大年初六啊! 馬化騰當年作為一個程序員,大年期間也在苦逼的加班!
按時間推算,1971年出生的馬化騰,18年前還是一個28歲的小伙。而騰訊公司是在1998年成立,也就是說這條代碼還是在騰訊成立不久,馬化騰寫下的。
聽騰訊的大師兄Tony(張志東)說,騰訊最早的辦公室,是一間舞蹈室,還掛著80年代“迪斯科”風格的大燈球,后來才搬去賽格。
兄弟們加班累了,還可以舞一曲兒放松心情,比現(xiàn)在格子間的條件好多了,而最早的企鵝就在這誕生。
03
代碼寫累了,分分鐘嗨起來
后來騰訊就搬到了深圳華強北的賽格科技園,并一待就是6年,正是這6年為今天的騰訊打下了根基。
就是在這個地方,馬化騰和他的小伙伴熬夜修復了多少BUG,QQ誕生賺取第一桶金,香港上市都在這里度過。(小貼士:騰訊是2004年在香港上市的)
04
偏愛偽代碼的馬總
有傳聞稱當年馬化騰最喜歡的就是編寫偽代碼,他的這點興趣愛好,也不知道是真是假,畢竟大佬不是隨便人都能見的。不知道各位對偽代碼的編寫有什么心得,下面就來談談偽代碼應該怎么寫!
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現(xiàn)。因此,偽代碼必須結構清晰、代碼簡單、可讀性好,并且類似自然語言。介于自然語言與編程語言之間。
它以編程語言的書寫形式指明算法的職能。相比于程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標準的語言。我們可以將整個算法運行過程的結構用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關鍵是你把你程序的意思表達出來)描述出來. 使用偽代碼, 可以幫助我們更好的表述算法, 不用拘泥于具體的實現(xiàn)。
人們在用不同的編程語言實現(xiàn)同一個算法時意識到,他們的實現(xiàn)(注意:這里是實現(xiàn),不是功能)很不同。尤其是對于那些熟練于不同編程語言的程序員要理解一個(用其他編程語言編寫的程序的)功能時可能很難,因為程序語言的形式限制了程序員對程序關鍵部分的理解。這樣偽代碼就應運而生了。
當考慮算法功能(而不是其語言實現(xiàn))時,偽代碼常常得到應用。計算機科學在教學中通常使用虛擬碼,以使得所有的程序員都能理解。
綜上,簡單的說,讓人便于理解的代碼。不依賴于語言的,用來表示程序執(zhí)行過程,而不一定能編譯運行的代碼。在數據結構講算法的時候用的很多。
例如,類Pascal語言的偽代碼的語法規(guī)則是:在偽代碼中,每一條指令占一行(else if,例外)。指令后不跟任何符號(Pascal和C中語句要以分號結尾)。書寫上的“縮進”表示程序中的分支程序結構。這種縮進風格也適用于if-then-else語句。用縮進取代傳統(tǒng)Pascal中的begin和end語句來表示程序的塊結構可以大大提高代碼的清晰性;同一模塊的語句有相同的縮進量,次一級模塊的語句相對與其父級模塊的語句縮進。
算法的偽代碼語言在某些方面可能顯得不太正規(guī),但是給我們描述算法提供了很多方便,并且可以使我們忽略算法實現(xiàn)中很多麻煩的細節(jié)。通常每個算法開始時都要描述它的輸入和輸出,而且算法中的每一行都給編上號碼,在解釋算法的過程中會經常使用算法步驟中的行號來指代算法的步驟。算法的偽代碼描述形式上并不是非常嚴格,其主要特性和通常的規(guī)定如下:
1) 算法中出現(xiàn)的數組、變量可以是以下類型:整數、實數、字符、位串或指針。通常這些類型可以從算法的上下文來看是清楚的,并不需要額外加以說明。
2) 在算法中的某些指令或子任務可以用文字來敘述,例如,"設x是A中的最大項",這里A是一個數組;或者"將x插入L中",這里L是一個鏈表。這樣做的目的是為了避免因那些與主要問題無關的細節(jié)使算法本身雜亂無章。
3) 算術表達式可以使用通常的算術運算符(+,-,*,/,以及表示冪的^)。邏輯表達式可以使用關系運算符=,≠,<,>,≤和≥,以及邏輯運算符與(and),或(or),非(not)。
這里a是變量、數組項,b是算術表達式、邏輯表達式或指針表達式。語句的含義是將b的值賦給a。
5) 若a和b都是變量、數組項,那么記號a<->b 表示a和b的內容進行交換。
這里c是邏輯表達式,s和s′是單一的語句或者是被括在do和end之間的語句串。對于上述兩種形式,假若c為真,則s被執(zhí)行一次。假若c為假,則在第一種形式中,if語句的執(zhí)行就完成了,而在第二種形式中,執(zhí)行s′。在所有的情況下,控制就進行到了下一個語句,除非在s或s′中的goto語句使控制轉向到其它地方。
8) 有兩種循環(huán)指令:while和for。
這里c是邏輯表達式,而s是由一個或更多個語句組成的語句串。當c為真時,執(zhí)行s。在每一次執(zhí)行s之前,c都被檢查一下;假若c為假,控制就進行到緊跟在while語句后面的語句。注意,當控制第一次達到while語句時,假若c為假,則s一次也不執(zhí)行。
for var init to limit by incr dosend
這里var是變量,init、limit和incr都是算術表達式,而s是由一個或多個語句組成的語句串。初始時,var被賦予init的值。假若incr≥0,則只要var≤limit,就執(zhí)行s并且將incr加到var上。(假若incr<0,則只要var≥limit,就執(zhí)行s并且將incr加到var上)。incr的符號不能由s來該改變。
9) exit語句可以在通常的結束條件滿足之前,被用來結束while循環(huán)或者for循環(huán)的執(zhí)行。exit導致轉向到緊接在包含exit的(最內層)while或者for循環(huán)后面的一個語句。
10) return用來指出一個算法執(zhí)行的終點;如果算法在最后一條指令之后結束,它通常是被省略的;它被用得最多的場合是檢測到不合需要的條件時。return的后面可以緊接被括在引號的信息。
11) 算法中的注釋被括在/* */之中。諸如read和output之類的各種輸入或者輸出也在需要時被用到。
偽代碼只是像流程圖一樣用在程序設計的初期,幫助寫出程序流程。簡單的程序一般都不用寫流程、寫思路,但是復雜的代碼,最好還是把流程寫下來,總體上去考慮整個功能如何實現(xiàn)。寫完以后不僅可以用來作為以后測試,維護的基礎,還可用來與他人交流。但是,如果把全部的東西寫下來必定可能會讓費很多時間,那么這個時候可以采用偽代碼方式。比如:
IF 九點以前 THEN do 私人事務; ELSE 9點到18點 THEN 工作; ELSE 下班; END IF
這樣不但可以達到文檔的效果,同時可以節(jié)約時間. 更重要的是,使結構比較清晰,表達方式更加直觀.
下面介紹一種類Pascal語言的偽代碼的語法規(guī)則。
在偽代碼中,每一條指令占一行(else if 例外,),指令后不跟任何符號(Pascal和C中語句要以分號結尾);
書寫上的“縮進”表示程序中的分支程序結構。這種縮進風格也適用于if-then-else語句。用縮進取代傳統(tǒng)Pascal中的begin和end語句來表示程序的塊結構可以大大提高代碼的清晰性;同一模塊的語句有相同的縮進量,次一級模塊的語句相對與其父級模塊的語句縮進;
在偽代碼中,通常用連續(xù)的數字或字母來標示同一即模塊中的連續(xù)語句,有時也可省略標號。
在偽代碼中,變量名和保留字不區(qū)分大小寫,這一點和Pascal相同,與C或C++不同;
在偽代碼中,變量不需聲明,但變量局部于特定過程,不能不加顯示的說明就使用全局變量;
賦值語句用符號←表示,x←exp表示將exp的值賦給x,其中x是一個變量,exp是一個與x同類型的變量或表達式(該表達式的結果與x同類型);多重賦值i←j←e是將表達式e的值賦給變量i和j,這種表示與j←e和i←e等價。
x = y;x = 20*(y+1);x = y = 30;
選擇語句用if-then-else來表示,并且這種if-then-else可以嵌套,與Pascal中的if-then-else沒有什么區(qū)別。
if (Condition1)then [ Block 1 ]else if (Condition2)then [ Block 2 ]else [ Block 3 ]
循環(huán)語句有三種:while循環(huán)、repeat-until循環(huán)和for循環(huán),其語法均與Pascal類似,只是用縮進代替begin - end;
1. x ← 02. y ← 03. z ← 04. while x < N
1. do x ← x + 12. y ← x + y3. for t ← 0 to 10
1. do z ← ( z + x * y ) / 1002. repeat
1. y ← y + 12. z ← z - y3. until z < 04. z ← x * y5. y ← y / 2
x = y = z = 0;while( z < N ){x ++;y += x;for( t = 0; t < 10; t++ ){z = ( z + x * y ) / 100;do {y ++;z -= y;} while( z >= 0 );}z = x * y;}y /= 2;
數組元素的存取有數組名后跟“[下標]”表示。例如A[j]指示數組A的第j個元素。符號“ …”用來指示數組中值的范圍。
A[1…j]表示含元素A[1], A[2], … , A[j]的子數組;
復合數據用對象(Object)來表示,對象由屬性(attribute)和域(field)構成。域的存取是由域名后接由方括號括住的對象名表示。
數組可被看作是一個對象,其屬性有l(wèi)ength,表示其中元素的個數,則length[A]就表示數組A中的元素的個數。在表示數組元素和對象屬性時都要用方括號,一般來說從上下文可以看出其含義。
用于表示一個數組或對象的變量被看作是指向表示數組或對象的數據的一個指針。對于某個對象x的所有域f,賦值y←x就使f[y]=f[x],更進一步,若有f[x]←3,則不僅有f[x]=3,同時有f[y]=3,換言之,在賦值y←x后,x和y指向同一個對象。
有時,一個指針不指向任何對象,這時我們賦給他nil。
函數值利用 “return (函數返回值)” 語句來返回,調用方法與Pascal類似;過程用 “call 過程名”語句來調用;
1. x ← t + 102. y ← sin(x)3. call CalValue(x,y)
參數用按值傳遞方式傳給一個過程:被調用過程接受參數的一份副本,若他對某個參數賦值,則這種變化對發(fā)出調用的過程是不可見的。當傳遞一個對象時,只是拷貝指向該對象的指針,而不拷貝其各個域。
開始置t的初值為1置i的初值為2當i<=5,執(zhí)行下面操作:使t=t*i使i=i+1{循環(huán)體到此結束}輸出t的值結束
begini→t2→iwhile i<=5{t*i→ti+1→i}print tend
老師說編程序前要養(yǎng)成寫算法的好習慣,覺得流程圖太煩,比較喜歡偽代碼。感覺寫出偽代碼就等于編出程序了,所以很懶,很少寫算法。
馬化騰可以說是程序員界的杰出人才,想當年他也要苦逼的加班。馬化騰如今的成功,不知道是不是加班加多了,激發(fā)了他的斗志。當然,這是玩笑話。畢竟作為程序員,相信大家加班都加習慣了。關于上面?zhèn)未a的編寫,大家還有什么看法,歡迎踴躍回復。
-END-
免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯(lián)系刪除
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!
掃描二維碼,關注更多精彩內容
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
驅動電源
在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。
關鍵字:
工業(yè)電機
驅動電源
LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...
關鍵字:
驅動電源
照明系統(tǒng)
散熱
根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。
關鍵字:
LED
設計
驅動電源
電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...
關鍵字:
電動汽車
新能源
驅動電源
在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...
關鍵字:
發(fā)光二極管
驅動電源
LED
LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。
關鍵字:
LED
驅動電源
功率因數校正
在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...
關鍵字:
LED照明技術
電磁干擾
驅動電源
開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源
關鍵字:
LED
驅動電源
開關電源
LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
LED
隧道燈
驅動電源
LED驅動電源在LED照明系統(tǒng)中扮演著至關重要的角色。由于LED具有節(jié)能、環(huán)保、長壽命等優(yōu)點,使得LED照明在各個領域得到廣泛應用。然而,LED的電流、電壓特性需要特定的驅動電源才能正常工作。本文將介紹常用的LED驅動電...
關鍵字:
LED驅動電源
led照明
LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電源轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
LED
驅動電源
高壓工頻交流
種種跡象都在表明,半導體行業(yè)或已提前進入寒冬時期,越來越多的廠商開始扛不住了……
關鍵字:
LED
半導體
驅動電源
崧盛股份9日發(fā)布投資者關系活動記錄表,就植物照明發(fā)展趨勢、行業(yè)壁壘等問題進行分享。植物照明未來市場需求廣闊崧盛股份指出,植物照明將會走向長期產業(yè)領域。主要原因有三:第一,LED植物照明賦能終端種植更具有經濟價值。由于LE...
關鍵字:
崧盛股份
驅動電源
在當今高度發(fā)展的技術中,電子產品的升級越來越快,LED燈技術也在不斷發(fā)展,這使我們的城市變得豐富多彩。 LED驅動電源將電源轉換為特定的電壓和電流,以驅動LED發(fā)光。通常情況下:LED驅動電源的輸入包括高壓工頻交流電(即...
關鍵字:
LED
驅動電源
高壓直流
人類社會的進步離不開社會上各行各業(yè)的努力,各種各樣的電子產品的更新?lián)Q代離不開我們的設計者的努力,其實很多人并不會去了解電子產品的組成,比如LED電源。
關鍵字:
LED
驅動電源
低壓直流
隨著科學技術的發(fā)展,LED技術也在不斷發(fā)展,為我們的生活帶來各種便利,為我們提供各種各樣生活信息,造福著我們人類。LED驅動電源實際上是一種電源,但是它是一種特定的電源,用于驅動LED發(fā)射帶有電壓或電流的光。 因此,LE...
關鍵字:
LED
驅動電源
電流
LED燈作為一種新型節(jié)能和無污染光源,由于其特有的發(fā)光照明特性,在現(xiàn)代照明應用中發(fā)揮著革命性的作用。作為 LED 照明產業(yè)鏈中最為核心的部件之一,LED 驅動電源的驅動控制技術所存在的可靠性低、成本高等典型問題一直制約著...
關鍵字:
多路
LED
驅動電源
隨著社會的快速發(fā)展,LED技術也在飛速發(fā)展,為我們的城市的燈光煥發(fā)光彩,讓我們的生活越來越有趣,那么你知道LED需要LED驅動電源嗎?那么你知道什么是LED驅動電源嗎?
關鍵字:
LED
開關電源
驅動電源
早前有新聞稱,Cree在2018年開始宣布轉型高科技半導體領域,并一邊逐漸脫離照明與LED相關業(yè)務,一邊持續(xù)投資半導體。在今日,Cree宣布與SMART Global Holdings, Inc.達成最終協(xié)議,擬將LED...
關鍵字:
cree
led照明