Re: [請益] 資工出路困惑
舉一個自己碰到的真實例子。
前幾天在寫類似 Facebook 塗鴨牆的 content list UI,
這個 list 中的每一個 element 中的一些資料需要指定 element 才能拿到。
也就是說跟 DB query 第一次會拿到 list,裡面裝著 elements;
接著再 iterate 一次 list,才能把每個 element 裡面的資料拿回來。
我負責 UI 的部分,因為趕時間,所以只有做一個 updateList() 的 function,
這個 function 會刷新整份 list。
這時候問題就來了,我在每一次拿到新資料時,就叫一次 updateList(),
所以那個畫面的 UI 要閃動很多次才會完成。
雖然這是一個很簡單的問題,很快就能處理掉,
不過如果有學過時間複雜度,可以很清楚的知道,
這是因為整個更新 UI 的流程居然是 O(N^2)。
※ 引述《okmenko (okmenko)》之銘言:
: : 分享些看法,約在 5~10 年前,資工系的人根本就不碰Web-based System,
: : 原因是因為,台灣電子產業太發達了,隨便去電子業上市櫃公司撈,
: : 薪水都比做Web-based Systems 的人高太多了。
: : 看到的履歷都是 C、C++、Algorithm、Firware、Driver....
: : 沒想到近五年,尤其是這兩三年,
: : 資工系的履歷幾乎全部變成 Web-based,或 Andoid 的人變多了。
: : 這還不打緊,可怕的是怎麼幾乎所有的人都在學"開發工具"阿
: : back-end:
: : PHP各種Frameworks、ASP.NET、Java 各種 MVC Framworks、
: : Python、Ruby各種 Frameworks。
: : front-end:
: : jQuery、bootstrap、各種主流JS Frameworks
: : Mobile:
: : Android 各種API怎麼呼叫、IOS 各種 API怎麼呼叫。
: : 這些都是國外幫你寫好好的 "開發工具",不太需要很難的知識,
: : 依照規定做事,看文件與範例程式,熟能生巧就會,只是快與慢的差別而已。
: : 到最後,台灣所有在寫軟體的人,有九成九的工作都是在學 API怎麼用而已。
: 其實我覺得大家都只是混口飯吃又不是每個人都想當技術狂熱者
: 明明就有現成的在那邊,知道怎麼改不就好了!?
: 基本上老闆管你會哪些東西? 老闆只會丟一個專案上來問你多久可以做完
: 整天趕專案都飽了回家還要Study,搞得自己完全沒有生活品質
: 當然以上感想是因為只待在中下階層...我了解中上階層是另外一個世界
: : 老鳥與新手的差別,就是多做幾年,可能做系統比較順與快一點而已。
: : 你覺得這種工作的薪資會高到哪?
: : 少學這些"開發工具",多去學數學、演算法、統計等基礎科目,
: : 再來就是各種演算法與數學的應用,如機器學習、
: : 影像處理、數值預測、使用者需求預測等等,你才有機會喊薪水阿。
: 老實說大家都說開發這些Mobile Soft,Web-based System
: 需要學"所謂基礎課程" (數學、演算法、統計)
: 但是每次問到學這些到底可以"應用"在哪?
: 大家只會說:這是基本功,這是應該學的,這是有幫助的
: 實在不解...
: 而且真正私底下問幾個已經從事以上工作3年的前輩
: 他們卻說:根本用不太到阿!!
: : 看到資工系的學生在學校都在學開發工具,
: : 或看到一些年近40歲的Programer的履歷,都只是各種API的呼叫,
: : 真的很為這些人擔心阿。
: 當然以上只是討論而已,因為進入這產業沒很久
--
http://changyuheng.github.io/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.31.118
※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1417507527.A.EED.html
推
12/02 16:15, , 1F
12/02 16:15, 1F
推
12/02 16:24, , 2F
12/02 16:24, 2F
推
12/02 16:43, , 3F
12/02 16:43, 3F
只針對基礎無用的部分回應,基礎讓我們在這個 case 可以立即找出 root cause。
推
12/02 18:10, , 4F
12/02 18:10, 4F
因為那是用 API 去問的,API 的作者只提供這樣的方式。
推
12/02 19:42, , 5F
12/02 19:42, 5F
因為 updateList() 要刷整份 list 所以是 O(N),
每處理一個 element 都 call 一次 updateList() 就要 O(N * N)。
推
12/02 19:46, , 6F
12/02 19:46, 6F
→
12/02 19:46, , 7F
12/02 19:46, 7F
推
12/02 21:22, , 8F
12/02 21:22, 8F
推
12/02 22:04, , 9F
12/02 22:04, 9F
推
12/02 22:48, , 10F
12/02 22:48, 10F
→
12/02 22:53, , 11F
12/02 22:53, 11F
推
12/02 22:54, , 12F
12/02 22:54, 12F
推
12/02 23:29, , 13F
12/02 23:29, 13F
→
12/02 23:30, , 14F
12/02 23:30, 14F
→
12/02 23:42, , 15F
12/02 23:42, 15F
→
12/03 02:47, , 16F
12/03 02:47, 16F
→
12/03 02:47, , 17F
12/03 02:47, 17F
這邊的立場是針對前一篇,因為有提到「知道怎麼改就好」,
所以這邊的「蠢方法」和「聰明知識」是要分開看的。
我假定前人先寫出了「蠢方法」,而現在接手這份 code 要改善這個問題,
當然解決這個問題還有其他方法、工具,解法也有很多種,
不過我想說的是最初級的演算法也能應用在平常工作中而且隨處可見。
推
12/03 07:31, , 18F
12/03 07:31, 18F
→
12/03 07:32, , 19F
12/03 07:32, 19F
推
12/03 09:13, , 20F
12/03 09:13, 20F
推
12/03 10:35, , 21F
12/03 10:35, 21F
→
12/03 10:35, , 22F
12/03 10:35, 22F
推
12/03 11:58, , 23F
12/03 11:58, 23F
推
12/03 11:58, , 24F
12/03 11:58, 24F
→
12/03 11:58, , 25F
12/03 11:58, 25F
※ 編輯: changyuheng (36.231.31.118), 12/03/2014 12:54:44
討論串 (同標題文章)
本文引述了以下文章的的內容:
請益
3
15
完整討論串 (本文為第 12 之 12 篇):
請益
16
25
請益
3
15
請益
8
34
請益
3
9
請益
4
5
請益
13
27
請益
3
10
請益
7
11
請益
2
19