天天看點

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

通過程式設計,職場人員可以克服手工操作 Excel 的困難,大幅提升工作效率。本文精心挑選了四種程式語言,從安裝、調試、表格式資料計算等方面進行深度對比, 并着重考察了學習難度,esProc 在這幾款工具中表現出色,最适合職場人員學習。點選職場人員該學什麼程式語言了解詳情。

商業工作中最常見的資料是表格式資料,比如訂單記錄、人員資訊、銷售合同等,用專業的術語來說叫做結構化資料。職場人員處理表格式資料時,最常用的工具是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")[email protected]() 讀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是最适合職場人員的程式語言,不僅學習難度低,而且容易實作較複雜的表格式資料計算,還提供了一鍵式安裝和針對表格式資料的調試功能。