自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從小開始學(xué)編程的小姐姐自述:我變成更好程序員的三點(diǎn)心得體會(huì)

新聞 前端
最近,國外一名小姐姐分享了自己的編程學(xué)習(xí)經(jīng)驗(yàn),引起了不少關(guān)注。

 本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

編者按:最近,國外一名小姐姐分享了自己的編程學(xué)習(xí)經(jīng)驗(yàn),引起了不少關(guān)注。她名為Keri Savoca,小時(shí)候就學(xué)了HTML并開發(fā)了網(wǎng)站。之后又學(xué)習(xí)了SQL語言以及JavaScript和Ruby等。在這個(gè)過程中,她也積累了不少感悟與經(jīng)驗(yàn),并分享了出來。有人閱讀了之后稱,文章里面的確有比較扎實(shí)的干貨。希望能夠給你帶來啟發(fā)。

從小開始學(xué)編程的小姐姐自述:我變成更好程序員的三點(diǎn)心得體會(huì)

編程并不是要你告訴計(jì)算機(jī)做某事

很多人都以為,編程就是要告訴計(jì)算機(jī)去做某事,就只需要編寫一個(gè)命令,就像 do X一樣,問題就解決了。

這其實(shí)是一個(gè)很大的誤解,編程需要的不是do X,而是:

  • Do X to Y
  • Get X from Y
  • Get X from Y, and put it in Z
  • Create X in Y
  • Create X in Y, and make it do Z

等等。

只有開始寫代碼來解決實(shí)際問題,才能意識(shí)到這一點(diǎn)。

比如說,從BigQuery 中提取一組數(shù)據(jù),并將其連接到Data Studio中做條形圖。

一般情況下,可以通過點(diǎn)擊按鈕對X軸上的參數(shù)進(jìn)行升序或降序排序,但你想要根據(jù)BigQuery中的維度進(jìn)行自定義排序的手,就需要代碼來解決這個(gè)問題了。

假設(shè)想要完成的X軸上的排序順序是:A, D, E, B, C, F,排序順序與其在“table001”中“location”維度有關(guān)系,可以這樣解決:

  1. ELECT *, 
  2. CASE 
  3. WHEN location = ‘A’ then 1 
  4. WHEN location = ‘D’ then 2 
  5. WHEN location = ‘E’ then 3 
  6. WHEN location = ‘B’ then 4 
  7. WHEN location = ‘C’ then 5 
  8. WHEN location = ‘F’ then 6 
  9. ELSE 0 
  10. END as SortOrder 
  11. FROM 
  12. table001 

現(xiàn)在可以根據(jù) SortOrder 進(jìn)行排序,這是自定義的,而不是升序或降序。

這就是所謂的do X,但編程遠(yuǎn)遠(yuǎn)沒有結(jié)束。因?yàn)檫@些只存在于控制臺(tái)中,而沒有實(shí)際應(yīng)用。

編程到這個(gè)階段,才剛剛完成了一半。

這聽起來像是一個(gè)常識(shí),但對于剛開始編程的人來說,可能需要過一段時(shí)間才能夠在概念上有所理解與體會(huì)。

寫代碼是為了解決問題,不要太依賴教程

但根據(jù)說明性教程學(xué)習(xí)編程的時(shí)候,卻很難學(xué)到這一點(diǎn)。

因?yàn)槟悴皇窃谡嬲鉀Q一個(gè)問題,而是在遵循一系列的指令。

當(dāng)你正確的遵循這些指令的時(shí)候,就會(huì)產(chǎn)生一個(gè)特定的結(jié)果。

但如果你要去解決一個(gè)尚未解決的問題時(shí)呢?就沒有任何指令可以遵循了。

在學(xué)習(xí)編程的時(shí)候要注意到,學(xué)習(xí)到的技能應(yīng)該是可以轉(zhuǎn)換的。如果你不能把你練習(xí)的技能應(yīng)用到不同的場景中,跟著教程學(xué)習(xí)就沒有意義。

基于這方面考慮,上面的示例應(yīng)該要加上because這個(gè)詞:

  • Do X to Y because …
  • Get X from Y because …
  • Get X from Y, and put it in Z because …
  • Create X in Y because …
  • Create X in Y, and make it do Z because …

當(dāng)你學(xué)會(huì)了制作一個(gè)待辦事項(xiàng)列表應(yīng)用程序的時(shí)候,你應(yīng)該學(xué)到的是,如何使用相同的概念來使應(yīng)用程序以類似的方式運(yùn)行。

多試試偽代碼,可以提升算法思維

當(dāng)寫出來的代碼沒法運(yùn)行的時(shí)候,你要怎么做?

很多人的方式是試錯(cuò),嘗試不同的方法來解決問題。

結(jié)果無非兩種:要么終于起作用了,要么不起作用。

這并不是在于對編程語言缺乏理解,而是算法思維上的問題。

比如你想寫一段代碼,從Y那里得到X,然后放到Z里面。

卻發(fā)現(xiàn)不知道從哪里得到了Z,然后試著把它放到了X中。

該怎么辦?只是試錯(cuò)可能解決問題,但很難知道到底哪里錯(cuò)了。

一種英國學(xué)校學(xué)生經(jīng)常玩的游戲“FizzBuzz問題”通常被用來當(dāng)做編程面試中的題目,也可以作為練習(xí)“偽代碼”的測試:

寫一個(gè)程序打印1到100這些數(shù)字。但是遇到數(shù)字為3的倍數(shù)的時(shí)候,打印“Fizz”替代數(shù)字,5的倍數(shù)用“Buzz”代替,既是3的倍數(shù)又是5的倍數(shù)打印“FizzBuzz”。

從小開始學(xué)編程的小姐姐自述:我變成更好程序員的三點(diǎn)心得體會(huì)

技術(shù)博主聞波(webary)在過去的一篇博文中說,就這樣的一個(gè)小問題,很多優(yōu)秀程序員順手就能寫出來方式,但很多計(jì)算機(jī)專業(yè)的畢業(yè)生都不會(huì)做或者花費(fèi)更多的時(shí)間去做。

背后的原因,就是忽略了如何想出解決問題的辦法,而是一上來就想代碼實(shí)現(xiàn)的問題。

而偽代碼是一個(gè)比較好的方式,會(huì)引導(dǎo)你從算法開始思考。

這不需要你去考慮用什么語言來解決問題,而是先想出解決問題的辦法。

原文鏈接:
https://medium.com/better-programming/the-3-realizations-that-made-me-a-better-programmer-af7d1bcab4d3

簡單卻又復(fù)雜的FizzBuzz面試編程問題
https://www.cnblogs.com/webary/p/6507413.html

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2010-04-07 11:36:56

JNCIP

2009-07-03 18:49:07

綜合布線工程實(shí)施

2011-04-01 15:22:12

Zabbix配置安裝

2011-09-28 13:21:16

軟件項(xiàng)目

2019-11-11 09:33:09

戴爾

2009-11-04 14:45:18

接入網(wǎng)優(yōu)化

2009-08-25 13:57:09

C#泛型集合類型

2009-04-27 16:04:47

Windows 7微軟操作系統(tǒng)

2009-09-09 18:07:49

CCNA考試資料

2009-08-28 14:49:19

DHCP服務(wù)器管理維護(hù)

2017-11-03 09:10:48

2009-01-19 20:16:23

Oracle心得體會(huì)

2009-07-01 14:28:20

cisco1700路由器配置

2017-11-06 09:10:56

程序員數(shù)據(jù)行業(yè)

2009-11-25 17:24:42

無線路由器

2013-04-15 10:55:09

程序員

2018-01-03 10:28:02

程序員生涯雷軍

2021-10-25 05:43:40

前端技術(shù)編程

2022-05-24 15:55:37

避障小車華為
點(diǎn)贊
收藏

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