稀裏糊塗也學習了幾種編程語言了,雖然每種都只是能應付平時工做,看到神奇的用法時仍然要去查查語法。java
每學一門新語言,除去語法規則,其中最經常使用的最須要熟練掌握的東西,卻都是差很少的。小記一下,之後再學新語言也能夠有所專一,可以快速上手。python
1.數據結構c++
對於每一門語言,內建的一些數據結構是最最經常使用的,數組,鏈表,隊列,棧,hashmap等apache
c語言表示,除了數組,偶啥都沒有內置,想用都得自個來。不過,雖然如此,開源項目裏面,依然已經實現了很多通用的數據結構,讓咱們能夠專一於業務,而不是數據結構。glib,Apache Portable Runtime都是其中的表明。編程
c++,stl/boost實現的vector,list,hashmap等模板類數組
java,基本就是jdk中內置的utils包裏面的LinkList,ArrayList等網絡
python,更是直接內建到語言級別,List、Tuple、Dictionary以及Set,幾乎就是上述說到的數據結構的最經常使用的。數據結構
2.字符串處理socket
每門語言字符處理都是一個深深的坑,連c語言的標準庫都須要把strcpy,strlen,strcmp這種函數放進來,就知道字符處理對一門語言多重要了。tcp
c++天然又是stl裏面的string類,比c的標準庫更增強大。
java的實現略顯繁瑣,除了String,還有什麼StringBuilder,StringBuffer,在當心其中的場景,否則當心程序內存增加性能不夠
3.文件IO
一般說來,這個實際上是操做系統提供的功能,不過語言爲了方便操做文件,都封裝了很多的接口。
C語言就是標準io庫,fopen/fread/fwrite/fclose/fseek/ftell函數族,固然還能夠直接用open,read,write等os接口。
C++搞出了IOStream這套東西。不太好用
java io更是把C++的Stream又更進了一步,inputStream,outputStream兩大接口,涵蓋了文件io,內存io等等操做,是個深坑。很少說,來個圖吧
4.網絡編程
這個更是操做系統提供的功能。
c和c++均可以直接使用socket函數族。不過開源項目已經實現了太多的協議實現,不過這個就跟語言學習無關了,針對具體的項目,學習不一樣的庫的使用便可
掌握socket的過程和tcp/ip的狀態切換就好。
5.接口抽象
c語言是函數指針
c++是純虛函數,virtual
java是interface