職場人員該學什麼程式語言
商業工作中最常見的資料是表格式資料,比如訂單記錄、人員資訊、銷售合同等,用專業的術語來說叫做結構化資料。職場人員處理表格式資料時,最常用的工具是Excel,這是因為Excel提供了簡單易用的公式和介面友好的操作,可以完成大多數任務。但有時遇到較特殊困難的運算,以及要反覆執行的動作或涉及大批次檔案的處理,繼續手工操作Excel就會非常繁瑣。這種時候,如果能程式設計解決,就可以大幅度提高工作能力和效率。這也是目前有不少職場人員開始學習程式語言的原因。
市場上可供職場人員學習使用以處理這些表格式資料的程式設計語言有不少,我們挑選其中四種典型技術來討論:1. 以MySQL為代表的小型資料庫;2. Excel中自帶的VBA;3.近年來非常熱門被各大培訓機構推崇的Python;4.後起的新秀esProc。下面,就我們來深入瞭解這些程式語言在安裝、除錯、表格式資料計算方面的差異,看看哪個最適合職場人員學習使用。
MySQL
MySQL、HSQLDB、SQLite都屬於小型資料庫,這類資料庫對軟硬體環境要求低,且能在桌面執行,理論上職場人員可以學會。這裡以最常見的MySQL為例,討論這種程式語言的特點。
安裝配置方面,MySQL雖然比大型資料庫簡化了很多,但對職場人員仍然難度過大。MySQL自帶的客戶端過於簡陋,通常要額外安裝第三方客戶端(比如Navicat、Toad),這就使MySQL的安裝難度成倍上升。更困難的是,無論服務端還是客戶端,都需要指定資料庫名、埠、字符集等關鍵配置項,非專業人員很難理解這些新概念,這也會增加安裝難度。
除錯方面, 因為SQL就不提倡分步,缺乏除錯的基礎,MySQL也沒有提供專門的除錯功能。簡單語句還可以,但稍複雜些比如帶巢狀的語句,除錯就非常困難,只能先手工拆分成多條語句分別執行,再逐步縮小問題範圍,整個操作過程不僅非常繁瑣,而且需要較高的技術水平,這對職場人員來講實在是太難了。
表格式資料的計算方面,MySQL同樣不方便。MySQL不支援直接計算Excel檔案,而是要先把Excel匯出為CSV,再將CSV匯入MySQL庫表,最後才能進行計算。其中入庫又分為4個步驟,分別是切換庫、建表、入庫、建索引。比如將emp.csv匯入MySQL,需要在命令列輸入如下程式碼:
mysql>use testdb; mysql>create table emp ( -> empid int(10) not null, -> name varchar(50), -> deptid int(10), -> salary float, -> sex varchar(1), -> birthday date, -> hireday date)CHARSET = utf8; mysql>LOAD DATA INFILE 'd:\data\emp.csv' INTO TABLE emp ->CHARACTER SET utf8 ->FIELDS TERMINATED BY ',' ->LINES TERMINATED BY '\r\n' ->IGNORE 1 LINES; mysql>ALTER TABLE emp ADD PRIMARY KEY (empid); |
入庫的過程不僅操作繁瑣,還要學習很多新概念,大部分職場人員被擋在門外,很難進入後續的計算階段。如果能夠突破前期的入庫障礙,後續的資料計算會相對容易些,因為SQL的歷史非常悠久,已經積累了大量教學資料,幾乎所有的常見運算都能找到相應的示例。不過,如果碰到的運算比較複雜, SQL就會比較為難,比如常見的有序運算,像同期比、排名等實現起來都很不方便;SQL又不提倡分步,經常導致要寫出多層巢狀的語句,這些對非專業人員來講要求過高了。
VBA
VBA是微軟官方提供的Excel開發語言,不僅可以定製最自由的操作介面,還可以實現任意一種運算,包括反覆和批次的運算。換句話說,理論上VBA什麼都可以實現。
安裝配置方面,由於 VBA內建於Excel,因此無需額外安裝,這一點最為友好。
除錯方面,VBA功能足夠豐富,對職場人員來說比較友好。VBA是現代開發語言,提倡分步計算,大目標可以拆分成多個小步驟,具備良好的除錯基礎。VBA也確實提供了breakpoint、run to curor、step in、step over等除錯功能,可以觀察每一步的計算結果和每個變數的實時狀態,這有利於開發者調整思路,並快速找到錯誤程式碼。
但是,在表格式資料的計算方面,VBA表現很差,遠不如MySQL。什麼都可以實現意味著什麼都不精,VBA缺少專門為表格資料設計的基礎運算,常見的過濾、排序、聚合等在SQL中只要一句即可完成的運算,在VBA中都要寫很多行程式碼才能實現,不僅過於繁瑣,而且對於非專業人員還有相當的難度,往往會變成難以逾越的障礙。
Python
VBA最大的缺陷是沒有表格式資料函式庫,而Python提供了豐富的這類運算能力,恰好可以彌補VBA的缺陷。對於基本的表格式資料運算,比如過濾、排序、聚合等,Python通常只需一兩行程式碼,比如下面的分組彙總:
data.groupby("deptid")['salary'].agg([len, np.sum, np.mean]) |
對於訪問Excel檔案,比起SQL中的十幾行程式碼,Python也只需兩行:
import pandas as pd data = pd.read_excel('d:/emp.xlsx') |
Python的安裝部署是個有點困難的事。安裝Python的時候,使用者需具備專業程式設計師的素質,才能從十幾個選項中做出正確選擇,否則很容易缺失功能,比如除錯功能預設不會安裝。有些選項甚至要透過下載不同的安裝包來解決,比如32位/64位。安裝好Python本體後並不能進行上述的表格資料計算,還需要再安裝pandas及Excel支援庫,這要用第三方函式庫的安裝工具來做,這個安裝工具執行在命令列中,對職場人員很不友好,而且安裝工具本身也需要更新,屆時還需另一個安裝命令。市場上也有一些封裝好的第三方安裝包,有的可以較方便地安裝Ptyhon和pandas,但五花八門良莠不齊,非專業人員很難選擇。從這個角度上看,Python其實還是面向專業技術人員的工具。
在除錯方面,Python作為提倡分步計算的現代開發語言,同樣具備完善的除錯功能。需要注意是,Python的表格式資料型別(dataFrame)是Pandas提供的,並不是Python的原生資料型別,除錯時Python會把它展現為糟亂的多層結構,而不是友好的表格形式。一邊除錯一邊在“立即執行”視窗手工列印變數,一定程度上可以緩解這個難題,但遠不如原生資料型別方便。
Python程式碼看起來簡單,但其實學習難度相當高,尤其對職場人員而言。Python Pandas不是為結構化資料設計,它用於處理表格式資料的dataFrame並不是我們常規理解的,由一行行記錄構成的集合,而是數學家常用的概念,由多個行列定義的矩陣。事實上,Pandas就沒有記錄這種資料型別,這導致很多運算要繞彎路才能想清楚,雖然看起來寫著並不長,但其實思考難度很大,比如“取上一行”要理解成“把列下移一位”才可以。其次,Python有很多與表格式資料相關的資料型別,除了前面講到的dataFrame,還有分組彙總後的DataFrameGroupBy型別,以及序列、矩陣等。這些本質上都是集合資料型別,但操作方式卻不一樣,你無法舉一反三,每次遇到都要去找例子看。如果沒有深刻理解它的內部結構(然而這對於職場人員又太難了),對和錯經常要憑運氣了。培訓班雖多,教出來也只是會抄程式碼改例子,碰到新情況沒有例子可抄時,很多人就會暈掉。
前面提到過,Python擅長基本的表格式資料運算,這其實還有另一層意思:Python較難實現較複雜的表格式資料計算,即使寫出來,程式碼也不再那麼簡練了。舉個不太複雜的例子,比如計算一支股票最長連續上漲的天數,Python寫出大概是這樣:
import pandas as pd aapl = pd.read_excel('d:/AAPL.xlsx') continue_inc_days=0 ; max_continue_inc_days=0 for i in aapl['price'].shift(0)>aapl['price'].shift(1): continue_inc_days =0 if i==False else continue_inc_days +1 max_continue_inc_days = continue_inc_days if max_continue_inc_days < continue_inc_days else max_continue_inc_days print(max_continue_inc_days) |
esProc
與Pandas類似,esProc也有一套表格式資料函式庫,與Pandas不同的是,esProc的學習難度要低得多。
esProc的基礎資料型別(序表)就是由一行行記錄構成的集合,和我們常規理解的一樣。使用這種資料型別計算表格式資料時,無須多繞彎路,只需按照自然思路正常實現,而且程式碼非常簡短。esProc的重要資料型別很少,只有記錄和集合這兩種。表格資料、陣列,以及分組之後的資料(集合的集合),這些本質上都是集合,在esProc中的操作方法也完全一致,只要學會一種,就能舉一反三掌握其他。
基本運算方面,esProc和pandas都很容易,看上去區別不大。但當遇到的問題有一定的複雜性時,就需要多個函式組合起來才能解決,有些還要在迴圈判斷中進行計算。對於這種情況,esProc比Python更容易實現,程式碼也更簡短。比如,同樣計算最長的連續上漲天數,esProc實現同樣思路只要兩行:
|
A | B |
1 | =file("d:/AAPL.xlsx").xlsimpor@t() | 讀Excel檔案,首行為列名 |
2 | =a=0,A1.max(a=if(price>price[-1],a+1,0)) | 求最長連續上漲天數 |
安裝部署方面,esProc雖然不能像VBA那樣無需安裝,但比MySQL和Python要簡單多了。為方便使用者操作,esProc特意簡化步驟,支援一鍵式安裝。即使定製安裝,也只有部署路徑和32位/64位這種簡單選擇,且主體功能不缺失。
在除錯方面,esProc和Python類似,同樣具備完善的除錯功能。比Python更方便的是,esProc支援對錶格資料型別(序表)進行除錯,可以方便地觀察表格資料的變化,可顯著提升除錯效率。除此之外,esProc用單元格代表計算步驟或變數,無需額外定義變數,用格名就可以引用該步驟或變數。這種類似Excel的開發風格,可以顯著降低職場人員的開發/除錯門檻。
總結
職場人員學習程式設計無非就是為了提高工作效率,能借助工具當然好,但如果工具本身帶來的難度更大,那就沒必要了。所以,這些程式語言不僅要好用,還要易學習、易安裝、易除錯等等。
經過前面的分析的比較,我們可以對考查的這幾種工具列一個對比表:
|
安裝 | 除錯 | 表格式資料計算 | 學習 |
MySql | ★ | ★ | ★★ | ★★★★ |
VBA | ★★★★★ | ★★ | ★ | ★ |
Python | ★★ | ★★★ | ★★★ | ★★★ |
esProc | ★★★★ | ★★★★★ | ★★★★★ | ★★★★ |
注:最高五星,星越多表示越方便
可以看出,相比之下,esProc是最適合職場人員的程式語言,不僅學習難度低,而且容易實現較複雜的表格式資料計算,還提供了一鍵式安裝和針對表格式資料的除錯功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2732080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 到底該學習什麼程式語言
- 第一門程式語言應該學什麼? – thenewstack
- 狗年最應該學什麼程式語言?就是它了!
- ABAP開發人員未來應該學些什麼
- 何為程式語言?為什麼要學C語言?C語言
- 財務人員有必要學習Python語言嗎?有什麼好處?Python
- 新手該學哪門程式語言
- 為什麼中國人沒有自己的程式語言?
- 什麼是程式語言
- 為什麼開發人員對於PHP語言褒貶不一PHP
- 學語言究竟學什麼?薦
- 前端開發人員為什麼應該拿高薪前端高薪
- 接下來該學哪種程式語言
- 為什麼亞馬遜、臉書和Discord的開發人員喜歡Rust程式語言? - businessinsider亞馬遜RustIDE
- 現代程式語言用什麼語言寫成?
- 為什麼 Python 開發人員應該使用 PipenvPython
- 中文程式語言——易語言,到底是用來幹什麼的?易語言值得學習嗎?易語言的優勢有什麼?
- 對談 MoonBit:AI 時代的程式語言應該是什麼樣子的?丨編碼人聲AI
- 你應該學習哪種程式語言?
- 看什麼程式語言都是天堂
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 為什麼要學習Python語言?哪些人適合學習?Python
- 為什麼初學者應該學習Python?7大主流程式語言對比!Python
- 為什麼要學習一門新的程式語言?
- 為什麼營銷人員應該保持傳送郵件?
- 李力:技術人員為什麼應該參加社群活動
- 為什麼測試人員必學Linux?Linux
- 什麼是程式語言?程式語言都有哪些?以及主要用途
- 為什麼需要更多的程式語言
- 怎麼學python程式語言?Python
- 明明白白學C#0.1.2 什麼是程式語言C#
- 軟體測試人員應該具備什麼樣的性格?
- 什麼是Go語言?Go語言有什麼特點?Go
- 為什麼會有這麼多程式語言
- 什麼是linux?學習linux需要什麼語言?Linux
- 什麼是linux?Linux需要學習什麼語言?Linux
- Linux運維人員需要掌握一門程式語言嗎?Linux運維
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計