職場人員該學什麼程式語言

bubblegum發表於2020-11-04

商業工作中最常見的資料是表格式資料,比如訂單記錄、人員資訊、銷售合同等,用專業的術語來說叫做結構化資料。職場人員處理表格式資料時,最常用的工具是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的開發風格,可以顯著降低職場人員的開發/除錯門檻。

imagepng

總結

職場人員學習程式設計無非就是為了提高工作效率,能借助工具當然好,但如果工具本身帶來的難度更大,那就沒必要了。所以,這些程式語言不僅要好用,還要易學習、易安裝、易除錯等等。

經過前面的分析的比較,我們可以對考查的這幾種工具列一個對比表:


安裝 除錯 表格式資料計算 學習
MySql ★★ ★★★★
VBA ★★★★★ ★★
Python ★★ ★★★ ★★★ ★★★
esProc ★★★★ ★★★★★ ★★★★★ ★★★★

注:最高五星,星越多表示越方便

可以看出,相比之下,esProc是最適合職場人員的程式語言,不僅學習難度低,而且容易實現較複雜的表格式資料計算,還提供了一鍵式安裝和針對表格式資料的除錯功能。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2732080/,如需轉載,請註明出處,否則將追究法律責任。

相關文章