計算機專業未來就業方向?

二本學校的計算機科學與技術專業,不知道自己需要學什麼。學校的力度可以說很小了,第一學期都快完了,開的linux課的期末考試是執行幾個指令。

我想要知道自己未來可以從事的工作,以及我需要有怎樣的專業知識,大概要掌握到怎樣程度。

謝謝各位答主。


其實比起糾結學什麼編程語言,更要糾結的可能是具體崗位的專業方向,因為同樣叫「Java工程師」,具體的工作內容可能是不一樣的。

計算機科學與技術或軟體工程專業的就業方向,按工種劃分的話大概是這樣:

軟體工程師,也叫程序員,敲代碼,實現上面提的需求,具體可以分為前端,後端,移動端等等,其中後端還可以繼續細分;

測試工程師,通過各種手段測試現有代碼,找bug,調優;

運維工程師,配置伺服器,保證伺服器的高可用性,現在雲計算,虛擬化的運用算是大公司運維的標配技能;

演算法工程師,小到一個新聞的排序演算法,大到推薦演算法,都是演算法崗要完成的;

架構,可以粗暴的理解為技術負責人,技術選型,架構層次設計...

數據科學家,知乎討論的很火,可能與 程序員 這個概念關係不大,大部分數據科學家在公司里的市場部;

網路工程師,聽過思科認證吧,下到布線上到組網,小公司一般沒有專門的網路工程師,不過這崗位的優勢是所有類型的,哪怕四線城市的大公司都會需要幾個;

資料庫工程師,也叫DBA,嗯,很多公司的日常就是,所有涉及資料庫的開發和維護工作都是單獨劃分出來的;

項目經理,其實項目經理才是軟體工程專業的對口工作,不過沒幾個應屆生能上這個崗位;

產品經理,不懂技術的人占產品經理總人數的大半……

銷售工程師,售前算是諮詢師一類的角色,售後也叫技術支持工程師,在很多公司算是比較「低端」的工作了。

還有一些什麼大數據工程師的,可以算在後端或者運維裡面。硬體和嵌入式方面的不熟就不寫了。

當然還有很多不同的「工種」。這些工作崗位之間,有些互相之間有不小的鴻溝,沒辦法輕易轉,有些崗位之間技術要求類似,轉崗比較容易。有些崗位對理論知識要求比較高,比如數據科學家,不是會調幾個包就算合格了,想找到好工作的話,先讀個碩吧。

對應到技術層面,可以找個招聘網站看看,Java,前端,Python...各種各樣的崗位,都有不同的技術要求。

當然編程語言只是工具,每一種語言都可能有不同的用途,像安卓可以用Java,後台可以用Java,搞個大數據平台也可以用Java,互相之間對Java的技術要求類似,但工作內容完全不同。

如果題主想做碼農的話,現在就可以翻翻招聘網站,大概考慮一下自己的技術方向,查一查知乎大神推薦的學習路線,以廣度優先,從易到難的基本原則學習一些技術,還不需要擔心就業問題,廣泛了解為主,適當鑽研為輔。

既不要只盯著一個方向,不關心其他技術,也不要漫無目的的每個都學一點點,到畢業了也什麼都不會。最要避免的還是半途跑路,不知道多少學計算機或者對計算機「有興趣」的人,學了兩星期就把書扔一邊去了。

舉個例子,如果題主還在大一,那就先把學校里的C++和數據結構學好,掌握基本的演算法,選擇循環語句,面向對象的概念,這些算是基礎中的基礎,包括你現在學的Linux,都是必須一直記住的東西。

然後選擇一些簡單的編程語言,比如php和html+css+js什麼的,去圖書館借點書,慢慢學再上手練練,也可以讀別人的項目代碼,全面了解一下從一個軟體的需求,業務邏輯的設計,到前端後端的具體實現,乃至測試和運維的日常,然後差不多就能肯定自己更喜歡做什麼了。這些事情說著簡單,其實按照每天2小時的學習量,能用掉你一整年時間。

有了對全局的大概了解,再靠著學校里的專業課和長期的自學,我想你打算學什麼語言,鑽研什麼技術,向什麼方向努力,都能清楚了。想做移動端,就學好Java和安卓或者Swift和iOS,做幾個小項目試試;想做運維,就把最基本的網路操作系統配置學好,繼續學雲計算,虛擬化的部署和實施,配置和調優Hadoop等。

另外,在時間充足的學生階段,多學幾種編程語言,多掌握幾種技術,擴大就業面,應該是可行的。

「計算機科學與技術」,技術 學好了找個工作沒問題,但 科學 也是很重要的,計算機的幾大核心課程,數據結構,操作系統,網路,組成原理,編譯原理,都需要認真學。


謝邀,半年的時間樓主不自己動手去學去敲跑知乎上問大家,大半說明樓主有點眼高手低,而且有點浮躁這樣的心態不適合這個行業,而且你現在會的命令行等你畢業估計要忘記大半,還是老老實實多看多練吧,現在技術更新很快,但是你在學校有足夠的時間去打下一個基礎也就是你的思維,這才是核心啊


那個寫的最多的基本很全面了,需要稍作補充的是。

如果不是參與工作或者參加一些大學裡的小項目前,大多數人是不知道自己未來從事的是什麼,跨行工作都說不定。大學提供了試錯機會,大可去參加一些坑逼與大神齊飛的院校競賽,開發個app,網站什麼的,或是matlab,ACM這類和計算機相關的。菜逼就看看,不裝逼,然後看哪個喜歡,盯著學。有話是這樣說的,先定一個小目標,今年賺一個億!


多看行業新聞,每天看,安排固定時間看,雷打不動,開始看不懂很正常,不懂的多搜搜多研究,看多了就懂了。

懂了也就明白業界都忙些什麼,為什麼忙那些,用什麼技術手段忙了。

自己的興趣點自然也就逐漸浮出來了。

有了興趣點,自然也就知道該武裝自己哪些東西了。


一、關於企業計算方向

企業計算(Enterprise Computing)是稍時髦較好聽的名詞,主要是指企業信息系統,如ERP軟體(企業資源規劃)、CRM軟體(客戶關係管理)、SCM軟體(供應鏈管理,即物流軟體),銀行證券軟體,財務軟體,電子商務/政務(包括各種網站),數據倉庫,數據挖掘,商務智能等企業信息管理系統.

企業計算領域對人才的需求顯然永遠是數量最大的,因為這是計算機應用最多的領域. 搞這方面的好處是:

(1)人才需求量極大,從事企業計算的公司在IT企業中佔了大多數。除非在專業上一無特長,一般在這一領域總能找到工作。

(2)這方面的入門門檻相對較低(如果你的軟體功底不是很深,可考慮這一領域)

(3)這方面的大公司較多,大公司要賺大錢,所以多將精力花在企業計算業務上.如果將來想到大公司找一份相對穩定的工作,從事這方面機會要大很多。

但從事這一領域的缺點也是明顯的:

由於這方面的入門門檻相對較低,雖然這方面的人才需求量是最大的,但將來競爭對手會較多。您會發現,即使他原不是學IT專業的人,也許他突擊幾個月後,做得照樣像模像樣。特別是當您年紀漸大後,您可能會發現,後面的年輕人可能很容易追上你的水平。如果您將來到國外去工作,你可能會發現從事這領域的人更多且高手如雲。當然,若您在這一領域經過多年企業經驗,達到較高境界(如能設計軟體架構),則身價永遠是高的。國內在這方面人才領域的主要問題是,有經驗的高手太少,皮毛了解的人太多。這篇文章分享之前我還是要推薦下我自己的JAVA群:472052538,不管你是小白還是大牛,小編我都挺歡迎,不定期分享乾貨,包括我自己整理的一份2017最新JAVA資料和零基礎入門教程!,歡迎初學和進階中的小夥伴

從事企業計算領域,最重要的技能型技術課程是

(1)J2EE架構與程序設計

(2)大型資料庫系統(如Oracle)

(3)基於UML的系統分析與設計。

如果說還有什麼重要的技能,還可將XML與Web Service技術包含進來,若您在這幾個領域掌握較好,則不愁找不到工作。

其中尤其以J2EE最為重要,目前J2EE已成為企業計算軟體開發的最主要平台。希望同學無論將來想從事何種方向,都應學一下J2EE課程,至少可為將來找工作備一手關鍵功夫。包括想從事嵌入式或其它領域的同學,也是很有必要學一下J2EE的,畢竟J2EE是目前最重要的平台之一,即使您將來不想從事企業計算領域,了解一下J2EE也是必要的,就像一門常識課程一樣。

它與企業計算關係較密切的技能還包括:Dot Net架構與程序設計、軟體測試技術、軟體配置管理,該領域較高層次的技能包括數據倉庫技術、構件與中間件技術、設計模式等。像通信協議分析與網路程序設計,Unix系統管理等也屬有些關係的課程。

只一個J2EE便是博大精深的,足夠你啃下去的,鑽研下去,您會發現你還要學的相關知識還有很多(包括EJB、XML、Web Service、Design Pattern等)。

雖然從事企業計算的人才很多,但以下企業計算領域無論國內外都屬稀缺人才:

(1)掌握大型ERP系統,主要是SAP系統,包括SAP Basis(系統管理)或SAP ABAP(編程)或SAP功能模塊實施(特別是財務模塊FI的實施)。

SAP顧問身價是最高的,而且非常難找。其它大型ERP系統,掌握 PeopleSoft、Oracle Finacial、J.D.Edward、Siebel等大型ERP軟體系統的人也很值錢。這方面的人之所以身價奇高,主要是因為這些軟體很專業,特別大,很難有D版可學習,只有特大企業(如世界500強,90%以上使用SAP)才用得起,而且必須有實際工作經驗才能掌握。如果是一個個人人都很容易有機會接觸的軟體,那麼這方面的人通常就不會稀缺。如果大家將來有機會接觸學習這些大型ERP軟體系統的機會,建議毫不猶豫地抓住,那將捧上一輩的金飯碗。在國外,會SAP的人特別值錢。物以稀為貴,這永遠是顛撲不破的真理。SAP的價值不僅是因為他是一個ERP軟體,而是其中體現的現代企業管理理念(如根據訂貨需求自動安排原料採購和生產計劃等)。一般500強公司絕不會像國內很多企業那樣,用J2EE從頭設計企業的 ERP系統(即將是怎樣的人力投入,而且設計出來的系統怎麼可能是完善的?),一定都會使用SAP這樣成熟的ERP軟體。用不起SAP的公司可能會用 J2EE設計ERP系統。

(2)掌握IBM大型機技術的人,如S/390主機,MVS操作系統,JCL作業控制語言,COBOL程序設計語言,DB2關係資料庫或IMS層次資料庫,CISC中間件交易控制系統等IBM大型機專用技術。

國內五大銀行,以及國外絕大多數銀行的後台系統使用的都是以上平台。IBM大型機號稱永不宕機而且平台相對封閉(這樣最安全),所以這些要求在24*7環境中連續運行的關鍵應用(術語叫mission critical applications)都採用IBM大型機。這方面的人才之所以稀缺,是因為會大型機的人都是老人(90年代以前搞IT的人),全世界新畢業的IT畢業生不可能再去學IBM大型機(這是一種相對"古老"的技術),沒有新人補上,而銀行的系統必須維持下去而且銀行還要不斷開發新業務(如新的存款品種), 雖然對IBM大型機人才的絕對需求量不很大,但相對恆定,銀行到哪裡找這方面的新人,很難找到. 若好找,花旗軟體也不會花那麼大的代價去培訓我們的實習同學了(去年培訓20多個人,聽說公司就花了數十萬元培訓費). 如果您將來到國外找工作,會IBM大型機可能是最好找工作的領域之一了,而且保證找的都是大銀行等好工作,我以前教過的計算機專業90-94級的一些同學,凡是畢業後從事大型機開發的,現多在國外一些很好的公司工作(有幾位同學在各國各公司跳來跳去,簡直如履平地). 其實我覺得我們最幸福的同學就是在花旗軟體做IBM大型機銀行軟體的同學,這樣的機會太難得了.我院00級2+2班一位同學,當初放棄保研,看準在花旗軟體做大型機並且非常努力,還未畢業,公司便派她到國外參加一個項目的開發,成了項目骨幹,我覺得她當初選擇是完全正確的。讀書的最終目地還是為了工作. 如果您將來在國外找工作,根本沒人管您是什麼文憑,國外企業絕不會花冤枉錢,只會招有領域工作經驗能立即上手的人,用最少的錢在限定的時間完成項目. 而在國內,因為人力成本較低,公司招聘一很多高學歷的人才,儘管可能根本用不到這麼高的學歷,但國內的人力太便宜了,為什麼不高消費一下人才呢?這樣公司的門面還要好看些。

.(3)其它如掌握數據倉庫技術的人在國內也很少. 目前最主流的數據倉庫平台應是ORACLE的數據倉庫工具. 在國外,會一些特殊數據倉庫的人,如NCR/TEREDATA的人非常難找.

同學現在年紀都很輕,年輕人充滿熱情,喜歡追逐一些熱門技術,這當然正確的,畢竟學習SAP和大型機的機會畢竟不多,畢業時先能找到一份工作是重要的. 但我相信隨著年紀的增長,大家將來慢慢都會思考的,掌握一項競爭對手較少的絕技的重要性,將來如果自己到國外工作什麼技術最好找工作(對搞軟體的人到國外工作或移民是最容易的,也許您現在不想,但我相信工作多年以後,很大一部分同學可能想到國外闖蕩一下),你要考慮你今後一生的出路,什麼樣的絕技是最穩定最輕鬆最高收入的. 搞軟體的人,當年紀大些時,您可能更向住像搞醫學人的那樣能更多靠經驗吃飯,而不須整天像年輕人那樣不得不去追逐不斷出現的軟體新技術,這個時候也許您也許會發現,如果您在SAP或大型機等方面有些絕技,您會有很大優勢,因為這些較偏的領域其技術變化是相對很緩慢的.

我還記得在2000年時我曾在業餘時間與一位德國人合作面試一些IT人才到德國去,那時德方各公司發來的需求有很多是SAP和IBM大型機的,我們在眾多應聘者中最後也未找到一個在這方面有經驗,甚至是有一點經驗的. 相反,掌握流行技術的人因太多而不很值錢.

我們的同學將來找工作時,不僅要盯著國內市場,還要有一种放眼全球的眼光,對搞軟體的人您將來完全可能到其它國家去工作. 尤其是在歐美、日本、新加坡等國家,對SAP(包括IBM大型機)人才的需求是很大的。畢竟比同學見得多些,提醒同學將來多留意有學習這些絕技的機會,一旦有機會建議當仁不讓. 國內的人才市場可訪問http://www.51job.com,國外的IT人才需求可訪問http://www.hotjobs.com、http://www.workopolis.com、 http://www.monster.com等著名網站。應經常訪問這些網站,以了解市場對人才的具體需求,早做準備。

以上對企業計算領域的觀點,供大家參考.雖然觀點未必正確,但確是直言不諱. 總之,每個人的腦袋都長在自己脖子上,每個人都應有自己的判斷.

二、關於嵌入式系統方向

嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、 VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、遊戲機、智能玩具、交換機、路由器、數控設備或儀錶、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

一類是學電子工程、通信工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關係最密切的最底層軟體,如BootLoader、 Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支持操作系統),最初級的硬體驅動程序等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對複雜軟體系統往往力不從心(例如嵌入式操作系統原理和複雜應用軟體等)。

另一類是學軟體、計算機專業出身的人,主要從事嵌入式操作系統和應用軟體的開發。如果我們學軟體的人對硬體原理和介面有較好的掌握,我們完全也可寫BSP 和硬體驅動程序。嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式設備的增值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作(目前有很多公司將硬體設計包給了專門的硬體公司,稍複雜的硬體都交給台灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有"花頭"可做的),所以我們搞軟體的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是複雜系統,軟體越起關鍵作用,而且這是目前的趨勢。

從事嵌入式軟體開發的好處是:

(1)目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如操作系統級、驅動程序級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。

(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟體的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,而且每個用戶的需求和完成時間都得按客戶要求改變,往往疲於奔命,重複勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閑時間(或只是對軟體進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟體的每個人工作範圍相對狹窄,所涉及的專業技術範圍就是那些(ARM、RTOS、MPEG、802.11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟體,可能下一個客戶要換成一個完全不同的軟體開發平台,那就苦了。

(3)哪天若想創業,搞自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟體那樣容易被盜版。土木學院有一個叫啟明星的公司開發出一個好象叫「工程e」的掌上PDA(南校區門口有廣告),施工技術人員用該PDA可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜 PDA(WinCE平台,可無線連網和上網),據他說銷路不錯,飯館點點PDA讓客戶點菜,多顯派頭檔次。我記得00級2+2班當年有一組同學在學 Windows程序設計課程時用VC++設計了一個功能很強的點菜系統做為課程項目,當時真想建議他們將這個軟體做成PDA,估計會有些銷路(上海火車站南廣場的Macdonald便使用很漂亮的PDA給用戶點食品,像摸像樣的)。這些PDA的硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。

從事嵌入式軟體開發的缺點是:

(1) 入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。

(2)這方面的企業數量要遠少於企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半導體、 Microtek、研華、華為、中興通信、上廣電等製造類企業)。這些企業的習慣思維方式是到電子、通信等偏硬專業找人。由於我院以前畢業生以企業計算為主,所以我院與這些企業聯繫相對較少。

(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。

我院同學若學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式操作系統方面,應是我們的強項。對於搞嵌入式軟體的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):

(1) 掌握主流嵌入式微處理器的結構與原理

(2) 必須掌握一個嵌入式操作系統

(3) 必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體項目。

在嵌入式軟體方面最重要的課程包括:

(1)嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,我院用這門課取代了傳統的「微機原理與介面」課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對ARM處理器工作原理和介面技術有充分了解,包括ARM的彙編指令系統。若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省內存又運行高速的最優代碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程序(驅動程序都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該設備的硬體規格說明書 (xxx Specification),您必須能看懂其中的內存分布和埠使用等最基本的說明(就像x86彙編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。還有同學對ARM彙編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將彙編語言當成一個程序設計語言,學彙編主要是為了掌握處理器工作原理的。一個不熟悉彙編語言的人,怎麼能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫彙編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像採集和圖像解壓縮),目前主要還要靠彙編寫程序(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用彙編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用彙編描述,此時您就必須看懂彙編程序,否則軟硬體人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉彙編。

[小知識] 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM佔據了絕對主流(資料說手機中幾乎100%都是ARM處理器)。ARM是一個只賣知識產權的公司,目前獲得購買了ARM CPU核授權許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎上進行了一些外圍擴展,形成自己的處理器(如Samsung S 3C 2410,Motorola i.MXL9328等處理器都是採用ARM 9內核,指令一級是相同的)。而眾多中小公司又購買了這些處理器,設計了各種各樣的開發板,如華恆等國內很多著名嵌入式公司都生產基於Samsung S 3C 2410的開發板,供最終用戶使用或供教學實驗。在ARM這個食物鏈上,ARM公司是大魚,Intel、Samsung等公司是小魚,而華恆等則是蝦米,最終用戶(想我們要採購嵌入式開發板的實驗室)則是喂蝦米的。Intel早期生產的是低端ARM(Strong ARM,相當於ARM 7),現在轉向主要生產高端ARM(即Intel Xscale處理器,相當於ARM 10,主要用在高端PDA上,如HP和DELL生產的PDA都採用Intel Xscale,價格較高)。目前應用最多的是ARM 7和ARM 9兩類處理器。 ARM 7較便宜,可跑uclinux(是一個不支持高級內存管理功能的嵌入式Linux系統)、Vxworks、uc/os II等實時操作系統,但因處理器不帶內存管理單元MMU(無內存分頁和地址映射機制,所以不能使用虛擬內存),所以不能跑Windows CE,另外通用Linux中的某些內存管理功能也不能用在ARM 7上。ARM 9是一個帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數功能。以上是我的一點了解,可能有不對的地方。我們學院正在建設的嵌入式實驗室(10月底到貨)包括30套ARM 7系統(擬採用Samsung S 3C 44b0x開發板,主要用於嵌入式處理器結構、嵌入式linux課程實驗),10套ARM 9系統(擬採用Samsung S 3C 2410x開發板,主要用於Windows CE課程建設),每套實驗板都配了高速模擬器,價格都很貴(比我們招標的DELL PC還貴),很容易損壞,同學應愛護使用。

(2) 嵌入式操作系統類課程

除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time Operating System.從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。

目前最重要的RTOS主要包括:

第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平台。Vxworks因出現稍早,實時性很強(據說可在 1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks佔據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell- alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。

第二類、嵌入式Linux操作系統:Linux的前途除作為伺服器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM 9上的,一般是將Linux 2.4.18 內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM 9上)。很多人預測,嵌入式Linux預計將佔嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由於ucOS/II功能有限,實用用得較少,所以我院不將其作為教學重點,要學習就應學直接實用的,比如 uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深操作系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式 Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。我院在該嵌入式Linux方面的課程系列是:本科生操作系統必修課,然後是Linux程序設計選修課,最後是嵌入式Linux系統選修課。我院在Linux方面目前已有較強力量, 魏 老 師和張 老師熟悉Linux開發, 金 老 師和唐 老師熟悉Linux系統管理。

第三類、 Windows CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀錶等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA 嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的"Windows CE嵌入式操作系統"課程的學校,這主要是基於以下原因:我院本身前面便有Windows程序設計課程,同學學過VC++後再學WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代 WinCE,而且將來誰占份額大還很難講,畢竟很多人更願意接受MS的平台,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮; 二是微軟亞洲研究院對我院WinCE課程的支持計劃,我們也很希望將來我院能有同學通過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。

總結關於嵌入式操作系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最好的選擇。

(3) 嵌入式開發的其它相關軟體課程

搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:

A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,我院已預訂了一位能開設數字圖像處理課程的博士。

B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入區域網或Internet,所以首先應掌握 TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無結通信協議包括無線區域網通信協議802.11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。

C、網路與信息安全技術:如加密技術,數字證書CA等。

D、DSP技術:DSP是Digital Signal Process數字信號處理的意思,DSP處理器通過硬體實現數字信號處理演算法,如高速數據採集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬體專業的課程,對於搞軟體的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。

(4)嵌入式開發的相關硬體基礎

對於軟體工程專業的學生,從事嵌入式軟體開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬體課程是較重要的。另外,彙編語言、C/C++、數據結構和演算法、特別是操作系統等軟體基礎課也是十分重要的。我們的主要目地是能看懂硬體工作原理,但重點應是在嵌入式軟體,特別操作系統級軟體,那將是我們的優勢。

我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶 OS,而現在很多嵌入式應用越來越複雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP演算法,如MPEG壓縮解壓縮演算法等用硬體來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP核實現技術,這方面的人目前市場上也很缺。

三、關於遊戲軟體方向 

將遊戲軟體人才稱為數字媒體軟體人才可能更好聽些,包括遊戲軟體策劃(最缺遊戲策劃的人)、遊戲軟體美術設計、遊戲軟體程序設計等多方面的人才,對軟體學院,遊戲軟體程序設計當然是最合適的了。

遊戲軟體人才的確目前很缺,聽說很多遊戲軟體公司苦於沒新人才補充,特別是沒有高手補充,不得不相互挖人才,以至將遊戲軟體人才身價越抬越高。網上說*** 教育部剛剛批准成立了***第一家專門培養四年制遊戲軟體人才的本科大學。其實國內很多大學,特別是軟體學院都有搞遊戲軟體人才的設想,但目前很少有做成的,主要原因是找不到能上遊戲軟體課的教師,聽說有個學校只能花很大的價錢從Korea找老師來上課,果真缺到此等地步?

已有很多青少年沉湎於網遊而頹廢的實例,好在還不至於上升到製造精神鴉片的高度,所以開發遊戲軟體的人也不必每日慚悔(但開發兒童益智類遊戲軟體的人是不需慚悔的),如果想想這是為發展民族軟體產業做貢獻,那反倒是一件有意義的事情了。不過聽一家遊戲軟體公司的老闆講,搞遊戲軟體開發是非常辛苦的。

若想自己創業,搞搞遊戲軟體是不錯的主意。現在網上網站或公司都在收購遊戲軟體(特別是手機遊戲軟體,因為手機遊戲用戶可選從網站上download到手機上,不像網遊那麼複雜),按download次數分成或一次性收購的都有。我們的同學在校期間是否也可發點小財?搞得好,說不定可賣到國外網站,直接掙 $$$呢。

大致遊戲分成以下幾類:

(1) PC類遊戲,包括單機和網遊。這類遊戲開發平台基本上都是基於VC++和DitrectX(如DirectShow,DirectDraw,D3D等, DirectX資料可直接到MS網站上查)。DirectX和OpenGL是兩個主要的圖形標準,OpenGL跨平台(Unix/Windows上都可跑),儘管很多搞研究的人對OpenGL讚不絕口,將DirectX罵得一文不值,但事實是,在Windows平台上,DirectX是最快最方便的,所以在Windows平台上的遊戲還是DirectX當家。

(2) 手機遊戲:目前手機遊戲主要開發平台有兩類:

第一類手機遊戲是J2ME平台(Java 2 Micro Edition),J2ME本是為嵌入式平台設計的Java,但由於Java生來就需要Java虛擬機(JVM)來解釋,所以在嵌入式產品很少用J2ME (太慢太耗內存)。但在手機遊戲中J2ME倒有用武之地,我想這可能主要是Java可跨OS平台的原因,因為手機的OS是千奇百怪的。我對J2ME完全外行,但上次聽Square Enix公司的人說,J2ME與我們同學學過的J2EE還是有較大差別的。據我所知,目前手機中用的較多的是KJava語言,KJava是運行在一種叫K Java Virtual Machine的解釋器上(K JVM是SUN早期為演示J2ME在嵌入式系統應用而開發的一個虛擬機),所以將在K JVM上運行的J2ME叫KJava。儘管SUN說今後不保證支持K JVM,將開發新的更高性能的J2ME虛擬機取而代之,但由於KJava出現較早,很多早期的手機遊戲軟體都將K JVM假想成J2ME虛擬機的標準了,所以目前有大量的KJava手機遊戲軟體存在,而且還在用KJava繼續開發。特別是***的手機遊戲軟體由於開發較早(像叫什麼docomi的***最大的電信運營商手機遊戲搞得很火),多是基於KJava的。所以目前市場上在招聘手機遊戲軟體人才時,很多要求掌握 KJava。有關J2ME請到Sun的網站上找資料。

另一類手機遊戲是BREW平台,BREW是美國高通公司(Qualcomm,CDMA核心技術都是該公司開發的,有無數移動通信技術專利)發明的,據說可編譯成二進位代碼,那當然快了。主要的開發語言是C/C++。但迫於被指責為較封閉的壓力,目前Qualcomm已推出BREW平台上的J2ME虛擬機(但可想像那將是怎樣慢的速度)。Qualcomm搞定了很多手機製造商簽定BREW授權許可協議,最狠的是Qualcomm與中國聯通綁在一起大堆基於 BREW的手機遊戲,所以有些公司招聘時要求掌握BREW也就不奇怪了。

去年00級2+2班畢業答辯時,有一位同學講的是在公司做的KJava遊戲(那是一家***遊戲軟體公司),還一位同學講的是另一家公司做的BREW遊戲,看來不同的公司有不同的選擇。將來誰會更火,我估計隨著手機硬體資源的不斷提高,不會在乎一個JVM的開銷,J2ME應更有前途,畢竟它是更開放的。這篇文章分享之前我還是要推薦下我自己的JAVA群:472052538,不管你是小白還是大牛,小編我都挺歡迎,不定期分享乾貨,包括我自己整理的一份2017最新JAVA資料和零基礎入門教程!,歡迎初學和進階中的小夥伴

(3) 專用遊戲機:如電視遊戲,XBOX等,我不太了解,不過這些遊戲也太偏了。

遊戲公司對人才的需求主要是以下技術:

(1) 計算機圖形學,特別是3D編程與演算法,包括DirectX或OpenGL。開發平台是VC++/DIRECTX或KJAVA。

(2) 公司說,手機遊戲因手機資源有限,必須對圖像進行壓縮,所以若有一些圖像壓縮演算法知識比較好。像若能有MPEG壓縮演算法較好,手機上採用的是比MPEG壓縮得更狠的一些特殊演算法,但觸類旁通。

(3) TCP/IP Socket編程是搞網遊開發的人必須掌握的。

(4) 人工智慧知識:複雜遊戲可能需要一些AI演算法。

(5) 網路與信息安全知識:網遊要防外掛。

該公司(大宇)的網遊伺服器是基於Linux平台的,所以還提出了對遊戲伺服器端軟體工程師的技術需求(精通MSSQL、ORACLE、MYSQL等資料庫,精通 Linux Programming,特別是Socket編程)。還有對維護遊戲網站人才需求(ASP .NET和資料庫)。

注意一條,最好有自己的遊戲軟體作品,若您應聘時能帶一個DirectX作品,那將有多強的競爭力,所以最重要的是現在就要行動,實踐,實踐,再實踐。對遊戲軟體開發有興趣的同學,在目前情況下,可自已鑽研一下相關知識(比方,可考慮將DirectX作為Windows程序設計課的課程項目),將來可拿出自己的作品來,同樣可找到這方面的好工作,我們00,01級同學都有這樣的例子。目前,會VC++的人本來就不多(現在很多年輕人都去追時髦的Dot Net來了,VC++因難學,所以人就少),會DirectX的人就更少了,這正是我們的機會。


從事什麼樣的工作,掌握多少專業知識,那隻能取決於你自己的興趣來決定,計算機專業的出路太多了,你可以去學運維,或者是學好編程語言為未來打好基礎,學網路研究交換機伺服器思科之類。這很重要。你要自己慢慢摸索。

當你有信心了再慢慢來接項目。

說這麼多,那隻能靠你自己。所有路前人都給你鋪好了,你只有慢慢去找。

給自己定個目標,然後朝目標走就對了。


其他不敢說,

各種服務的人性化,擬人化是一個趨勢。

人工智慧-機器學習-神經元網路 肯定是未來的一個很重要的重點。


謝邀

答主某985計算機專業,現大三,就我所見的話,計算機就業方向就這幾個:嵌入式開發、前端、後端(不包含伺服器運維)、演算法工程師等、還有硬體研發、移動開發(安卓、ios)、等等,具體就業方向看你自己的興趣,專業方向你可以選擇圖形、網路、資料庫、人工智慧等,看你自己學到什麼東西,還有自己需要學什麼東西。


(來自大一懵逼CS學生的知乎首答)

按照本不知名工科院校的情況,CS要麼去科研,要麼進公司做開發(創業應該跟這個差不多)(其實就CS這個專業來說,它應該是偏科研的)

要走科研,我覺得首先數學一定要學好,關注前沿技術,然後.....說實話由於本人的知識水平限制我也不知道幹嘛,可以看看大佬們都在幹嘛,盡量找出自己有興趣的方向,然後balabala....但是學好數學是一定沒錯的

做開發方面,個人認為在打好寫代碼和數學基礎的同時,儘可能去做具體的項目開發,自己想做一些什麼有趣的東西就盡量利用空閑時間把它實現吧....我個人的確挺喜歡這種為了實現自己的想法而努力學習的感覺的

(大一新生水平有限,只能給一個我認為如果是我我應該怎麼做的參考,以上)

話說我們大一上都不學Linux(逃x


去招聘網站上看看,什麼行業需要什麼知識。


計科的話主要偏研究,還是先爭取考研考個985 211吧


瀉藥啊

這個我不能強答了

畢竟我要考研了


為嘛邀請我...

我的計算機知識已經很膚淺了,不適合回答這個問題。

但一直認為軟體到發展和硬體技術息息相關。

我有些從事計算機領域工作的朋友,除了硬體測試,硬體開發,就是程序員(各種編程,測試,架構等等)。

但印象深刻的一個學業一直優秀的朋友,在美國做神經(人工智慧)。

所以,應該是有許多工作和研究可以做的。


瀉藥!

如果想更好的工作,建議本科期間多練練c++或者java,python也可以練練。大四努力考研,二本認真點考個211還是比較簡單的。

如果不考研也可以,基本大三結束出去實習。二本剛出來的話去上海應該有個7k


推薦閱讀:

一入IT深似海,從此妹紙是路人。請問擁有一個貌美如花,溫柔可人女票的可能有多大?
十年前的程序員,現在在做什麼?
計算機真的已經爛大街了嗎,女生學計算機沒出路嗎?
國內IT巨頭髮表過哪些頂級學術會議論文?
IT互聯網男都是通過什麼途徑找到女朋友的?

TAG:計算機科學 | IT行業 |