{eval=Array;=+count(Array);}
目前的軟件開(kāi)發(fā)產(chǎn)品多以互聯(lián)網(wǎng)形式呈現(xiàn),所以就以一套互聯(lián)網(wǎng)產(chǎn)品為例來(lái)說(shuō)一下開(kāi)發(fā)者都需要掌握哪些技術(shù)。
一套完整的互聯(lián)網(wǎng)產(chǎn)品包括移動(dòng)端(iOS、Android、WP)開(kāi)發(fā)、Web前端開(kāi)發(fā)和后端開(kāi)發(fā)幾個(gè)大的組成部分,下面分別描述一下這幾個(gè)部分都需要學(xué)習(xí)哪些技術(shù)。
iOS開(kāi)發(fā)需要學(xué)習(xí)OC或者Swift編程語(yǔ)言,Android開(kāi)發(fā)需要學(xué)習(xí)Java或者是kotlin,而WP開(kāi)發(fā)則需要學(xué)習(xí)C#。移動(dòng)端開(kāi)發(fā)屬于比較典型的應(yīng)用型開(kāi)發(fā),大部分開(kāi)發(fā)任務(wù)并不復(fù)雜,大部分人經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)都能夠掌握。
Web前端開(kāi)發(fā)涉及到Html、CSS和JavaScript幾個(gè)大的內(nèi)容,另外還需要學(xué)習(xí)一下比較流行的開(kāi)發(fā)框架。Web前端開(kāi)發(fā)的學(xué)習(xí)重點(diǎn)在JavaScript上,雖然JavaScript看起來(lái)比較簡(jiǎn)單,但也是有一定難度的,而且JavaScript正在從前端走向后端,從發(fā)展的前景來(lái)看,JavaScript還是非常不錯(cuò)的。
可以做后端開(kāi)發(fā)的語(yǔ)言比較多,比如Java、PHP、Python等都是比較常見(jiàn)的選擇。Java的特點(diǎn)是性能比較穩(wěn)定,對(duì)于大型Web開(kāi)發(fā)來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。PHP是Web開(kāi)發(fā)領(lǐng)域使用普及率非常高的編程語(yǔ)言,PHP自身具備極大的靈活性,所以深受開(kāi)發(fā)人員喜愛(ài),被稱(chēng)為“最好的編程語(yǔ)言”。Python語(yǔ)言的特點(diǎn)是簡(jiǎn)單、直接和靈活,Python有豐富的庫(kù)支持,但是Python在性能上還需要提高。
另外后端開(kāi)發(fā)還需要掌握數(shù)據(jù)庫(kù)知識(shí)和一些常見(jiàn)的開(kāi)發(fā)模式,在當(dāng)前的大數(shù)據(jù)時(shí)代,也需要掌握如何在大數(shù)據(jù)平臺(tái)上完成軟件的開(kāi)發(fā)。
以上這些只是一些基本的開(kāi)發(fā)技能,要想開(kāi)發(fā)出一套高質(zhì)量的軟件系統(tǒng)還需要掌握包括測(cè)試在內(nèi)的一系列工具,當(dāng)然往往也需要一個(gè)專(zhuān)業(yè)的開(kāi)發(fā)團(tuán)隊(duì)。
作者簡(jiǎn)介:中國(guó)科學(xué)院大學(xué)計(jì)算機(jī)專(zhuān)業(yè)研究生導(dǎo)師,從事IT行業(yè)多年,研究方向包括動(dòng)態(tài)軟件體系結(jié)構(gòu)、大數(shù)據(jù)、人工智能相關(guān)領(lǐng)域,有多年的一線研發(fā)經(jīng)驗(yàn)。
歡迎關(guān)注作者,歡迎咨詢(xún)計(jì)算機(jī)相關(guān)問(wèn)題。
看運(yùn)行在什么系統(tǒng)吧。
我現(xiàn)在運(yùn)營(yíng)6-7款軟件,都是自己獨(dú)立開(kāi)發(fā)的,大部分都是winform下的軟件系統(tǒng)。
編程語(yǔ)言主要是C#,其中腳本系統(tǒng)之前用的是python,后來(lái)因?yàn)樾阅軉?wèn)題都改成了C#。
官網(wǎng)需要跟軟件系統(tǒng)授權(quán)整合,后端類(lèi)庫(kù)和數(shù)據(jù)庫(kù)需要保持一致,用的也是C#,前端用的是asp.net+jqurey+ajax等等,都是比較老的技術(shù),運(yùn)行穩(wěn)定,性能可靠,也沒(méi)什么不好。
數(shù)據(jù)庫(kù)是sqlserver,單庫(kù)裝在ucloud最便宜的ECS上,十幾萬(wàn)的用戶(hù)數(shù)量,15分鐘在線峰值大概700以?xún)?nèi),足夠了。
其他的像xml、css、ras、md5、json、http、cookie、gdi+、h5等等,這些點(diǎn)的應(yīng)用也稱(chēng)得上技術(shù)的話,那可就多了去了。
不過(guò)我一直認(rèn)為我們絕大部分做的都是應(yīng)用軟件,說(shuō)白了就是使用別人已經(jīng)創(chuàng)造好的技術(shù),技術(shù)再牛你也不過(guò)是個(gè)使用者,充其量算是個(gè)應(yīng)用型人才。搞算法、搞理論或者制訂標(biāo)準(zhǔn)的,那才是真正的技術(shù)。
一: 獨(dú)立開(kāi)發(fā)一套軟件系統(tǒng)先了解下前后端
Web前端和后端開(kāi)發(fā)的區(qū)別和要求
有時(shí)候自己會(huì)分不清,其實(shí)是因?yàn)榍昂蠖硕剂私?,?lèi)似于全棧工程師,但又什么都不是很精通。那到底什么是前端、后端呢,我整理了一些企業(yè)要求級(jí)別的前端/后端基礎(chǔ),開(kāi)發(fā)框架等。
Web前端開(kāi)發(fā)
什么是 Web 前端?
Web前端,顧名思義是來(lái)做web的前端頁(yè)面的。這里所說(shuō)的前端泛指web前端,也就是在web應(yīng)用中用戶(hù)可以看得見(jiàn)碰得著的東西。包括web頁(yè)面的結(jié)構(gòu)、web的外觀視覺(jué)表現(xiàn)以及web層面的交互實(shí)現(xiàn)。web前端分為網(wǎng)頁(yè)設(shè)計(jì)師、網(wǎng)頁(yè)美工、web前端開(kāi)發(fā)工程師。首先網(wǎng)頁(yè)設(shè)計(jì)師是對(duì)網(wǎng)頁(yè)的架構(gòu)、色彩以及網(wǎng)站的整體頁(yè)面代碼,負(fù)責(zé)網(wǎng)頁(yè)美工只針對(duì)UI這塊兒的東西,比如網(wǎng)站是否做的漂亮。web前端開(kāi)發(fā)工程師是負(fù)責(zé)交互設(shè)計(jì)的,需要和程序猿進(jìn)行交互設(shè)計(jì)的配合。
Web前端開(kāi)發(fā)需要掌握的技術(shù):
1.熟練掌握前端開(kāi)發(fā)技術(shù)(HTML5、JS、JSON、XHTML、CSS3),了解各項(xiàng)技術(shù)的相關(guān)標(biāo)準(zhǔn)
2.掌握Ajax異步編程,能夠?qū)懗龈咝阅堋⒖蓮?fù)用的前端組件;
3.對(duì)OO、MVC、MVVM等編程思想、前端框架有深刻理解,熟練掌握一個(gè)前端框架(常用前端框架 Vuejs,AngularJS,React,Bootstrap,QUICK UI,移動(dòng)端有:Frozen UI,weUI ,SUI,MUI,AUI)了解其原理(框架有很多,選擇兩三個(gè)主流的框架,熟練,深度了解才可以);
4.善于Web性能優(yōu)化,可訪問(wèn)性、對(duì)SEO等有良好的體驗(yàn);理解表現(xiàn)層與數(shù)據(jù)層分離的概念、 Web語(yǔ)義化(這些也是在找工作中,很有用的加分項(xiàng));
5.了解前端安全機(jī)制,熟悉HTTP協(xié)議以及瀏覽器緩存策略;
6.熟悉常見(jiàn)JS開(kāi)發(fā)框架源碼實(shí)現(xiàn),(如:prototype、jQuery、Mootools,Ext, Dojo,underscore、YUI、Kissy),至少熟練一種(當(dāng)然也不要去選一些用的人很少的框架,要明白大項(xiàng)目都是團(tuán)隊(duì)做,不能自己搞一套);
7.擁有良好的代碼編寫(xiě),設(shè)計(jì)文檔撰寫(xiě)的經(jīng)驗(yàn),熟練使用Git等版本控制工具;
8.對(duì)常見(jiàn)的瀏覽器兼容問(wèn)題有清晰的理解,并有可靠的解決方案;如IE6/7/8/9、 Firefox、Safari、Chrome;
9.具有較高的審美(這個(gè)很重要,多去見(jiàn)識(shí)一些模板,高端的項(xiàng)目,就能感覺(jué)到有多大的差距)
web后端開(kāi)發(fā)
什么是 Web 后端?
Web后端更多的是負(fù)責(zé)產(chǎn)品的服務(wù)技術(shù)實(shí)現(xiàn),包括業(yè)務(wù)邏輯,數(shù)據(jù)存儲(chǔ)和處理,消息隊(duì)列處理等。以及產(chǎn)品服務(wù)端接口實(shí)現(xiàn),包括與前端的接口,第三方的接口,服務(wù)體系內(nèi)部接口等。后端開(kāi)發(fā)主要是對(duì)數(shù)據(jù)庫(kù)進(jìn)行交互以處理相應(yīng)的業(yè)務(wù)邏輯。web后端的話可供開(kāi)發(fā)的語(yǔ)言有 java、php、jsp、.NET 這些后端開(kāi)發(fā)語(yǔ)言,并且要掌握幾個(gè)常用后端框架。
Web前端開(kāi)發(fā)需要掌握的技術(shù):
1.目前多數(shù)企業(yè)要求對(duì)服務(wù)器端高并發(fā),大數(shù)據(jù)量處理經(jīng)驗(yàn)(簡(jiǎn)單的說(shuō)就是優(yōu)化服務(wù)器處理高并發(fā)事務(wù)的能力)
2.精通 java,php,jsp,servlet,java bean,JMS,EJB,Jdbc,F(xiàn)lex開(kāi)發(fā),對(duì)相關(guān)的工具、類(lèi)庫(kù)以及框架非常熟悉,常用后端框架如 SSM(Spring+SpringMVC+MyBatis)框架集,Velocity,Hibernate,iBatis,OSGI等,對(duì)Web開(kāi)發(fā)的模式有較深的理解(只少熟練掌握一套后端框架);
3.至少熟悉一種關(guān)系型數(shù)據(jù)庫(kù),如:mysql,oracle等。熟練使用oracle、sqlserver、SQL Develpoer,PLSQL,MySQL Workbench等常用的數(shù)據(jù)庫(kù)管理工具,對(duì)數(shù)據(jù)庫(kù)有較強(qiáng)的設(shè)計(jì)能力
4.熟悉maven項(xiàng)目配置管理工具,熟悉tomcat、jboss等應(yīng)用服務(wù)器,同時(shí)對(duì)在高并發(fā)處理情況下的負(fù)載調(diào)優(yōu)有相關(guān)經(jīng)驗(yàn)者優(yōu)先考慮
5.精通面向?qū)ο蠓治龊驮O(shè)計(jì)技術(shù),包括設(shè)計(jì)模式、UML建模等
6.熟悉網(wǎng)絡(luò)編程,具有設(shè)計(jì)和開(kāi)發(fā)對(duì)外API接口經(jīng)驗(yàn)和能力,同時(shí)具備跨平臺(tái)的API規(guī)范設(shè)計(jì)以及API高效調(diào)用設(shè)計(jì)能力
7.熟悉部分前端知識(shí)
總結(jié)
我感覺(jué)無(wú)論在知識(shí)的掌握深度上,還是知識(shí)掌握的寬度上,都是不夠的。
二: APP開(kāi)發(fā)制作方法/步驟
1/9 分步閱讀
用戶(hù)需求分析是整個(gè)APP開(kāi)發(fā)流程中最重要的一環(huán),相當(dāng)于企業(yè)中決策者的地位,一款A(yù)PP成功與否也盡數(shù)決定于此。此處的用戶(hù)需求分析是基于用戶(hù)的要求進(jìn)行APP功能的梳理。注意此處是用戶(hù),因?yàn)楹芏喙疽箝_(kāi)發(fā)出來(lái)的APP是給其用戶(hù)使用,因此在整理APP開(kāi)發(fā)需求時(shí),不僅要了解開(kāi)發(fā)企業(yè)的需求,也要了解其客戶(hù)群體的需求。最終將這些需求進(jìn)行梳理、分類(lèi),整理出大體的APP功能框架。此過(guò)程中需要與客戶(hù)密切的進(jìn)行溝通,力求做到?jīng)]有任何疑問(wèn),以免開(kāi)發(fā)出不實(shí)用的APP。
2/9
產(chǎn)品原型設(shè)計(jì)
在進(jìn)行一輪用戶(hù)需求分析之后,將整理出來(lái)的需求分類(lèi)、整理、排序成功能結(jié)構(gòu)模塊,此時(shí)可以利用現(xiàn)有的功能模塊搭建一個(gè)簡(jiǎn)單的產(chǎn)品原型。產(chǎn)品原型類(lèi)似于一個(gè)APP產(chǎn)品的草圖,將基本的功能結(jié)構(gòu)展示給客戶(hù),可以借助產(chǎn)品原型設(shè)計(jì)軟件模擬出相似的APP產(chǎn)品。將此產(chǎn)品原型與客戶(hù)進(jìn)行確認(rèn),確認(rèn)完畢就可進(jìn)入下一環(huán)節(jié)的開(kāi)發(fā)
3/9
UI視覺(jué)設(shè)計(jì)
在擁有APP產(chǎn)品原型草圖結(jié)構(gòu)之后,UI設(shè)計(jì)師們開(kāi)始對(duì)APP的界面進(jìn)行設(shè)計(jì)美化,根據(jù)APP的表現(xiàn)內(nèi)容進(jìn)行版面結(jié)構(gòu)設(shè)計(jì),然后對(duì)每一塊區(qū)域進(jìn)行相應(yīng)的配色,并繪制每個(gè)功能菜單的圖標(biāo)及其他頁(yè)面元素的設(shè)計(jì),最終設(shè)計(jì)出所有的APP界面效果圖。此過(guò)程與客戶(hù)進(jìn)行溝通,參考客戶(hù)建議進(jìn)行設(shè)計(jì)。
4/9
數(shù)據(jù)庫(kù)搭建
按照需求分析整理出來(lái)的功能數(shù)據(jù)處理情況,建立合理的數(shù)據(jù)庫(kù)表結(jié)構(gòu),優(yōu)化數(shù)據(jù)算法,提升數(shù)據(jù)的處理效率,保證在使用APP的過(guò)程中數(shù)據(jù)的安全性、準(zhǔn)確性、穩(wěn)定性和及時(shí)性。
5/9
服務(wù)端開(kāi)發(fā)
APP應(yīng)用的核心處理過(guò)程均是由服務(wù)器端的程序完成的,客戶(hù)端的APP僅僅只需要進(jìn)行收發(fā)數(shù)據(jù)即可。由于用戶(hù)的移動(dòng)端設(shè)備硬件配置和存儲(chǔ)容量有限,因此核心數(shù)據(jù)處理過(guò)程均是由服務(wù)器端進(jìn)行運(yùn)算處理的,這種方式也被稱(chēng)為云計(jì)算,服務(wù)器處理完成之后反饋給客戶(hù)端APP。因此服務(wù)器端的程序開(kāi)發(fā)極為重要,所有的功能均需要嚴(yán)格按照需求分析階段整理的功能來(lái)進(jìn)行開(kāi)發(fā)。
6/9
iOS/Android客戶(hù)端開(kāi)發(fā)
此時(shí)按照設(shè)計(jì)師設(shè)計(jì)的APP效果圖進(jìn)行開(kāi)發(fā)客戶(hù)端,主要是對(duì)設(shè)計(jì)效果圖的代碼實(shí)現(xiàn),并寫(xiě)入功能調(diào)用的接口,連接服務(wù)器端,方便與服務(wù)器端的數(shù)據(jù)進(jìn)行交互。根據(jù)Android和iOS的設(shè)備軟硬件情況進(jìn)行APP開(kāi)發(fā)和優(yōu)化,最終開(kāi)發(fā)出與效果圖一致的APP客戶(hù)端。
7/9
APP程序測(cè)試
對(duì)已開(kāi)發(fā)好的APP客戶(hù)端進(jìn)行全面的測(cè)試,此測(cè)試模擬用戶(hù)正常使用以及非正常使用的情況,通常會(huì)導(dǎo)入一些測(cè)試數(shù)據(jù)來(lái)進(jìn)行測(cè)試,將測(cè)試的結(jié)果進(jìn)行記錄,出現(xiàn)錯(cuò)誤則返回到開(kāi)發(fā)階段進(jìn)行修復(fù),如果測(cè)試通過(guò),則說(shuō)明整體APP開(kāi)發(fā)過(guò)程已經(jīng)完成。將成品APP應(yīng)用交給用戶(hù)進(jìn)行試用,用戶(hù)滿(mǎn)意之后進(jìn)行下一步工作。
8/9
上傳到應(yīng)用商店
到此階段一個(gè)APP開(kāi)發(fā)已經(jīng)完成,在完成簽名驗(yàn)證之后,將開(kāi)發(fā)好的客戶(hù)端APP程序提交發(fā)布到各應(yīng)用商店。iOS版本的APP提交到蘋(píng)果的AppStore,安卓的提交到國(guó)內(nèi)各大安卓應(yīng)用商店。
9/9
APP的維護(hù)及更新
對(duì)上線之后的APP進(jìn)行維護(hù),收集用戶(hù)反饋信息,及時(shí)修復(fù)APP應(yīng)用中出現(xiàn)的錯(cuò)誤(Bug)。如客戶(hù)需要進(jìn)行APP的功能更新時(shí),則返回至需求功能整理階段進(jìn)行開(kāi)發(fā),新功能開(kāi)發(fā)完成后經(jīng)測(cè)試通過(guò)即可發(fā)布更新。
謝邀。作為程序員我自己表示并沒(méi)有達(dá)到獨(dú)立開(kāi)發(fā)一套企業(yè)級(jí)的軟件系統(tǒng),如果只是一個(gè)比較普通的小項(xiàng)目,也是需要一定技術(shù)素養(yǎng)的。
本問(wèn)答由科技黑洞宇文笑創(chuàng)作,喜歡科技關(guān)注宇文笑
由于軟件種類(lèi)過(guò)多,所需技術(shù)千變?nèi)f化,這里只用B/S架構(gòu)的傳統(tǒng)web項(xiàng)目作為案例。獨(dú)立開(kāi)發(fā)系統(tǒng),首先你要明確自己需要做什么,為什么人群做,怎么做。what,who,how,WWH就包含了所需要的技能。
what,做什么,這需要軟件工程的知識(shí),設(shè)計(jì)一款軟件應(yīng)該嚴(yán)格按照軟件工程的思維去設(shè)計(jì),而不是憑空浮想聯(lián)翩,有一些產(chǎn)品經(jīng)理不懂技術(shù)設(shè)計(jì)的功能令人啼笑皆非。
who,這款軟件為誰(shuí)而設(shè)計(jì)的,這特別重要,因?yàn)檫@將影響業(yè)務(wù)邏輯以及數(shù)據(jù)庫(kù)設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件開(kāi)發(fā)非常核心的部分,尤其是數(shù)據(jù)量龐大的項(xiàng)目,調(diào)優(yōu)可不是容易活。
how,怎樣做。這就涉及軟件的開(kāi)發(fā),相關(guān)的技術(shù)活比較多。首先是精通一門(mén)編程語(yǔ)言,這里舉例Java,你要懂Java的web運(yùn)用,熟悉適用項(xiàng)目的框架,知道怎么搭框架,比如基本的SSM框架,尤其是spring框架的掌握,然后在嵌入技術(shù)比如安全框架shiro,緩存數(shù)據(jù)Redis。
需要架構(gòu)的好,設(shè)計(jì)模式至少得熟悉,Java源碼至少得熟讀。性能要調(diào)好,那可能jvm也得去碰一碰。除此之外,你還需要Linux的技術(shù),這是用于服務(wù)器的運(yùn)維,你還要懂前端,不然怎么和你的服務(wù)器進(jìn)行數(shù)據(jù)交互。
需要獨(dú)立開(kāi)發(fā)系統(tǒng)需要很多方面的技術(shù),但是獨(dú)立開(kāi)發(fā)優(yōu)秀實(shí)用的系統(tǒng)則需要良好的技術(shù)素養(yǎng)和高效高質(zhì)量的團(tuán)隊(duì)。
宇文笑一句話:
沒(méi)有好的team難有好的software。
(覺(jué)得有理的點(diǎn)點(diǎn)關(guān)注)
軟件開(kāi)發(fā)包括應(yīng)用系統(tǒng)開(kāi)發(fā)、嵌入式系統(tǒng)軟件開(kāi)發(fā)、工業(yè)軟件開(kāi)發(fā)、和大數(shù)據(jù)人工智能相關(guān)的數(shù)字化智能化系列的軟件開(kāi)發(fā)等等。
應(yīng)用軟件開(kāi)發(fā)其實(shí)我們是做的最好的一種,例如:網(wǎng)上商城、物流管理系統(tǒng)、辦公自動(dòng)化系統(tǒng)等等,給社會(huì)帶來(lái)了很大實(shí)惠的同時(shí)也提高了程序員的收入,它所需的技能是JAVA大數(shù)據(jù)的技術(shù)生態(tài)、php的技術(shù)生態(tài)、手機(jī)Android、iPhone技術(shù)生態(tài)等等。
嵌入式軟件開(kāi)發(fā)這塊的應(yīng)用說(shuō)實(shí)話我們做的也可以,當(dāng)然生態(tài)鏈頂端的芯片設(shè)計(jì)、芯片工藝等有待創(chuàng)新。這塊的軟件開(kāi)發(fā)我詳細(xì)和大家說(shuō)說(shuō)。
嵌入式方面的軟件開(kāi)發(fā)入門(mén)之前首先要把計(jì)算機(jī)組成原理、操作系統(tǒng)原理、C語(yǔ)言程序設(shè)計(jì)、軟件工程等基礎(chǔ)打好,也就是說(shuō)“計(jì)算機(jī)科學(xué)與技術(shù)”這個(gè)專(zhuān)業(yè)是最具優(yōu)勢(shì)的,當(dāng)然您是機(jī)械電子、電子信息技術(shù)、微電子類(lèi)的專(zhuān)業(yè)同樣具有優(yōu)勢(shì),只不過(guò)有的專(zhuān)業(yè)有的課程沒(méi)開(kāi),需要你輔修,具體輔修哪門(mén)課可以參考“計(jì)算機(jī)科學(xué)與技術(shù)”的課程體系,本人建議機(jī)械類(lèi)、電子類(lèi)、機(jī)電類(lèi)、電子信息類(lèi)、微電子類(lèi)等理工科學(xué)生讀個(gè)“計(jì)算機(jī)科學(xué)與技術(shù)”雙學(xué)歷,即使日后你往人工智能轉(zhuǎn)也極具優(yōu)勢(shì)。
學(xué)嵌入式的同仁入門(mén)的切入點(diǎn)可以先學(xué)C語(yǔ)言程序設(shè)計(jì)、51系列單片機(jī)(入門(mén)沒(méi)必要選ARM系列,因?yàn)锳RM寄存器多、指令多、管腳多會(huì)給你帶來(lái)不必要的麻煩,但設(shè)計(jì)思路大同小異,且51系列在中低端仍存在大量市場(chǎng)),然后到市面買(mǎi)51芯片和仿真軟件進(jìn)行實(shí)踐,51芯片也十分便宜。
接著說(shuō)說(shuō)工業(yè)軟件的開(kāi)發(fā),其實(shí)這方面學(xué)機(jī)械的、電子的更具優(yōu)勢(shì),當(dāng)然最好是機(jī)械電子類(lèi)專(zhuān)業(yè)的最具優(yōu)勢(shì),美中不足很多機(jī)械電子類(lèi)院校軟件開(kāi)發(fā)類(lèi)課程開(kāi)設(shè)不足,例如數(shù)據(jù)結(jié)構(gòu)和算法課程沒(méi)有,恰恰這門(mén)課是工業(yè)軟件核心課程之一,還是建議相關(guān)專(zhuān)業(yè)同學(xué)讀個(gè)“計(jì)算機(jī)科學(xué)與技術(shù)”或者“軟件工程”雙學(xué)歷。
搞工業(yè)軟件開(kāi)發(fā)的我先說(shuō)開(kāi)發(fā)工具:精通C語(yǔ)言編程,精通51系列、ARM系列單片機(jī)及其匯編語(yǔ)言、仿真工具,建模時(shí)候如果沒(méi)有MATLAB的可以使用Python代替;然后是基礎(chǔ)課方面,大家一定要把您的基礎(chǔ)課數(shù)學(xué)類(lèi)、機(jī)械設(shè)計(jì)類(lèi)、電子技術(shù)及其工藝類(lèi)、公差類(lèi)、數(shù)據(jù)結(jié)構(gòu)和算法、數(shù)學(xué)建模類(lèi)基礎(chǔ)打好,尤其是概率論和數(shù)理統(tǒng)計(jì)這門(mén)課至關(guān)重要。工業(yè)軟件的開(kāi)發(fā)直接關(guān)系著制造業(yè)產(chǎn)業(yè)升級(jí),如果工業(yè)軟件受制于人,那么制造業(yè)強(qiáng)國(guó)很容易變成一句空話。
大數(shù)據(jù)類(lèi)應(yīng)用類(lèi)的軟件開(kāi)發(fā):其實(shí)這方面我們做的非常好,特別是以BAT為代表的大廠,由于我國(guó)確實(shí)有諸多的大數(shù)據(jù)應(yīng)用場(chǎng)景,比如醫(yī)療大數(shù)據(jù)中的分析新冠病毒無(wú)癥狀感染者某地區(qū)分布的散點(diǎn)圖等等,這給大數(shù)據(jù)應(yīng)用開(kāi)發(fā)帶來(lái)機(jī)遇,也給相關(guān)得開(kāi)發(fā)人員帶來(lái)高薪之類(lèi)的實(shí)惠。這類(lèi)應(yīng)用開(kāi)發(fā)需要大家熟悉JAVA技術(shù)生態(tài)圈、hadoop、spark、Python等大數(shù)據(jù)應(yīng)用技術(shù),這些其實(shí)是被各類(lèi)媒體宣傳最多的,大家可以百度下大數(shù)據(jù)、hadoop等關(guān)鍵字,在此不在累述。但是我們要勇于面對(duì)我們?cè)跀?shù)據(jù)科學(xué)方面的創(chuàng)新不足或者說(shuō)基礎(chǔ)學(xué)科和技術(shù)生態(tài)圈原創(chuàng)不足。
人工智能類(lèi)軟件開(kāi)發(fā):這個(gè)交叉學(xué)科就多了,但是其核心交叉類(lèi)學(xué)科是《數(shù)學(xué)+計(jì)算機(jī)科學(xué)》,像機(jī)械類(lèi)、物理類(lèi)等等學(xué)科其實(shí)是輔助交叉學(xué)科,當(dāng)然工業(yè)機(jī)器人私服電機(jī)還是需要一定的機(jī)械制造的和電子技術(shù)的,但它的大腦還是和數(shù)學(xué)類(lèi)相關(guān)的“機(jī)器學(xué)習(xí)算法”,那么怎么使大腦快速運(yùn)轉(zhuǎn)?當(dāng)然需要計(jì)算機(jī)芯片、實(shí)時(shí)操作系統(tǒng)等等系統(tǒng)軟件。
切記學(xué)好人工智能務(wù)必打好數(shù)學(xué)基礎(chǔ),最好讀取個(gè)數(shù)學(xué)的雙學(xué)歷,同時(shí)打好計(jì)算機(jī)的基礎(chǔ),注意初學(xué)者不能把Python和人工智能劃等號(hào),MATLAB被禁止之后,Python充當(dāng)了數(shù)學(xué)建模的角色,只不過(guò)是建模算法實(shí)現(xiàn)不需要我們自己動(dòng)手編程了,我們只需要關(guān)注人工智能大腦的運(yùn)轉(zhuǎn)的算法“機(jī)器學(xué)習(xí)”本身的調(diào)參即可,當(dāng)然我們最高境界是你自己開(kāi)發(fā)出機(jī)器學(xué)習(xí)算法來(lái)充實(shí)Python的sklearn算法庫(kù)。這里我衷心希望我們有自己的強(qiáng)化學(xué)習(xí)、規(guī)則學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)等學(xué)習(xí)方式的原創(chuàng)算法,或者在別人算法基礎(chǔ)上創(chuàng)新,而不僅僅是個(gè)“調(diào)包者”、“調(diào)參者”,當(dāng)然了要從其做起,不然也無(wú)法知道現(xiàn)在的算法的不足之處。
現(xiàn)在都是云開(kāi)發(fā),小程序之類(lèi)的輕應(yīng)用,沒(méi)必要重復(fù)造輪子重新開(kāi)發(fā)。這主要看你想做哪個(gè)行業(yè)的系統(tǒng)?客戶(hù)是哪些?解決他們哪些痛點(diǎn)?作為一個(gè)干了二十年IT,從研發(fā)到項(xiàng)目經(jīng)理到解決方案都有經(jīng)歷過(guò)很多,愿意深入溝通,帶你入行“挨踢”[大笑]
在軟件領(lǐng)域,一套軟件系統(tǒng)的構(gòu)建通常有兩大部分組成。前端和后端兩部分。前端負(fù)責(zé)頁(yè)面的編寫(xiě)以及數(shù)據(jù)的展示。后端負(fù)責(zé)把數(shù)據(jù)查詢(xún)出來(lái)提供給前端,以此來(lái)完成一套完整的軟件系統(tǒng)。下面我們來(lái)細(xì)分講講這兩大分類(lèi)所需的技術(shù)。
在前端開(kāi)發(fā)領(lǐng)域,應(yīng)用分為客戶(hù)端和Web端。下面我們?cè)敿?xì)闡述予以說(shuō)明。
客戶(hù)端
客戶(hù)端依賴(lài)于所處的操作系統(tǒng),也就說(shuō)針對(duì)每種不同操作系統(tǒng),客戶(hù)端都需要多帶帶去開(kāi)發(fā)一套,所以缺點(diǎn)就是開(kāi)發(fā)成本高。其優(yōu)點(diǎn)是運(yùn)行流暢,很多操作系統(tǒng)對(duì)外的接口都可以被客戶(hù)端進(jìn)行調(diào)用,比如打開(kāi)攝像頭等,所以相對(duì)而言用戶(hù)體驗(yàn)度較佳。
目前而言,主流的客戶(hù)端有Android客戶(hù)端,IOS客戶(hù)端,Mac客戶(hù)端,Windows客戶(hù)端以及Linux客戶(hù)端。其中,由于Android和IOS運(yùn)行在手機(jī)上,攜帶方便,使用起來(lái)觸手可及,所以受很多用戶(hù)的喜愛(ài)。比如我們?nèi)粘=佑|的微信,QQ等應(yīng)用,大多通過(guò)手機(jī)來(lái)進(jìn)行使用。所以下面我們重點(diǎn)針對(duì)Android客戶(hù)端和IOS客戶(hù)端編寫(xiě)所需的技術(shù)。
Android客戶(hù)端
第一步:
Android客戶(hù)端所需的語(yǔ)言,既可以用Java語(yǔ)言,也可以用Kotlin元。其中Kotlin是后期Google推出的官方語(yǔ)言。所以編寫(xiě)Android應(yīng)用,只需掌握其中的一種語(yǔ)言。
第二步:
由于Android應(yīng)用是由一系列堆砌而成,所以開(kāi)發(fā)Android應(yīng)用除了熟悉一門(mén)編程語(yǔ)言之外,還需要熟悉Android組件的基本使用。關(guān)于Android組件如何使用的問(wèn)題,Google已經(jīng)給我們提供了Android開(kāi)發(fā)者文檔。大家在學(xué)習(xí)過(guò)程中,參考Android開(kāi)發(fā)者文檔來(lái)進(jìn)行學(xué)習(xí)和使用即可。
第三步:
語(yǔ)言有了,組件的學(xué)習(xí)文檔也有了,接下來(lái)就是開(kāi)始實(shí)踐應(yīng)用的時(shí)候了。用什么工具來(lái)編寫(xiě)呢?在推出Android應(yīng)用開(kāi)發(fā)的時(shí)候,Google已經(jīng)為我們準(zhǔn)備好了這一切。那就是Android Studio編輯器。有了這款A(yù)ndroid Studio開(kāi)發(fā)工具,我們就可以很方便地開(kāi)發(fā)屬于自己的第一個(gè)Android應(yīng)用啦!具體可以在Android開(kāi)發(fā)文檔上下載得到。
IOS客戶(hù)端
第一步:
IOS客戶(hù)端開(kāi)發(fā)語(yǔ)言既可以用Objective-C語(yǔ)言,也可以用來(lái)Swift語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā)。其中Swift語(yǔ)言是后來(lái)Apple推出的。所以對(duì)于IOS客戶(hù)端的開(kāi)發(fā),掌握好其中一門(mén)語(yǔ)言吧。
第二步:
IOS和Android學(xué)習(xí)思路類(lèi)似,除了掌握一門(mén)語(yǔ)言之外,還需要學(xué)習(xí)組件的使用。在IOS中,對(duì)應(yīng)組件的使用可以參考IOS開(kāi)發(fā)文檔。
第三步:
語(yǔ)言和文檔都有了,現(xiàn)在還差一款I(lǐng)OS編輯器。在IOS開(kāi)發(fā)中,那就是Xcode。萬(wàn)事俱備,現(xiàn)在大家就可以用Xcode嘗試開(kāi)發(fā)第一個(gè)IOS應(yīng)用了。
Web端
Web無(wú)需依賴(lài)于任何操作系統(tǒng),所以Web端相比客戶(hù)端而言,其優(yōu)點(diǎn)是開(kāi)發(fā)成本會(huì)低很多。缺點(diǎn)是運(yùn)行流暢較差,調(diào)用操作系統(tǒng)所提供的功能相對(duì)有限。那么Web前端如何構(gòu)建呢?大家可以參考以下步驟:
第一步:
熟悉基本HTML。在Web前端中,HTML是一個(gè)頁(yè)面的基本骨架,類(lèi)似于一個(gè)人的骨架。所以熟悉基本的HTML標(biāo)簽是必要的。
第二步:
有了HTML作為頁(yè)面的骨架之后,接下來(lái)我們需要對(duì)頁(yè)面進(jìn)行調(diào)色和布局。此時(shí)CSS就派上用場(chǎng)了。CSS的作用就是用來(lái)如何各個(gè)HTML標(biāo)簽如何擺放以及用什么視覺(jué)效果把標(biāo)簽展示出來(lái)。
第三步:
有了HTML和CSS之后,一個(gè)基本的靜態(tài)頁(yè)面就出來(lái)。但是作為一個(gè)用戶(hù),是需要和頁(yè)面有交互才使其應(yīng)用具備真正有意義的產(chǎn)品。所以此時(shí)的JavaScript就派上用場(chǎng)了。它的作用就就是針對(duì)用戶(hù)的各種操作進(jìn)行相應(yīng)觸發(fā)和處理。
第四步:
具備了前三者之后,我們知道一個(gè)Web前端就可以著手用Visual Studio Code進(jìn)行開(kāi)發(fā)了。但是對(duì)于一個(gè)發(fā)展多年的Web前端而言,很多基礎(chǔ)組件是沒(méi)必要一點(diǎn)點(diǎn)重復(fù)去實(shí)現(xiàn)的。為了加快開(kāi)發(fā)效率,此時(shí)我們可以借助現(xiàn)成的組件庫(kù)來(lái)實(shí)現(xiàn)我們想要的頁(yè)面效果。常見(jiàn)的組件庫(kù)有Element,Ant Design 和 Vant。其中Element和Ant Design偏向于電腦版,而Vant偏向于手機(jī)版。選擇一個(gè)你喜歡的框架進(jìn)行著手實(shí)踐。
第五步:
同樣,基于Web技術(shù)的沉淀,同樣也衍生出了關(guān)于JavaScript相關(guān)的框架。比如Vue和React。選擇你喜歡一種框架即可。在這里需要說(shuō)明的是:Vue框架對(duì)應(yīng)的組件庫(kù)為Element(電腦)和Vant(手機(jī)版),而React對(duì)應(yīng)的組件庫(kù)為Ant Design。
熟悉了這五項(xiàng)之后,你也就進(jìn)入Web前端開(kāi)發(fā)的大門(mén)。
后端的作用就是為前端提供數(shù)據(jù)支撐。當(dāng)前端需要數(shù)據(jù)時(shí),前端通常會(huì)以HTTP的形式向后端發(fā)起請(qǐng)求,后端接收到前端的數(shù)據(jù)請(qǐng)求之后,向數(shù)據(jù)庫(kù)查詢(xún)出所需字段,然后HTTP的形式范圍給到前端,以此來(lái)完成數(shù)據(jù)的傳遞。下面就來(lái)簡(jiǎn)單闡述一下如何入門(mén)后端開(kāi)發(fā)。
第一步:
通常而言,在后端開(kāi)發(fā)中,由于Java語(yǔ)言本身設(shè)計(jì)的面向?qū)ο蟮奶匦砸约爸苓吷鷳B(tài)繁榮,使其在后端開(kāi)發(fā)領(lǐng)域占據(jù)著一個(gè)重要的位置。所以對(duì)于想要入門(mén)后端開(kāi)發(fā)的同學(xué),掌握好Java語(yǔ)言的語(yǔ)法知識(shí)是第一步。
第二步:
由于在后端開(kāi)發(fā)中,我們查詢(xún)數(shù)據(jù)和插入數(shù)據(jù),面向的對(duì)象都是數(shù)據(jù)庫(kù),所以熟悉數(shù)據(jù)庫(kù)的基本使用是必不可少的。常見(jiàn)的數(shù)據(jù)庫(kù)有MySQL,Oracle以及Redis等。熟悉一兩種數(shù)據(jù)庫(kù)的基本使用是我們打通后端開(kāi)發(fā)的第二步。
第三步:
基于前面兩步,我們就可以基本上手后端的開(kāi)發(fā)。但是此時(shí)什么輪子都需要從基礎(chǔ)做起,費(fèi)時(shí)又耗力。鑒于后端開(kāi)發(fā)已有一些年的歷史了。所以慢慢也會(huì)衍生出來(lái)一些后端的框架,以加速我們?nèi)粘i_(kāi)發(fā)進(jìn)度。所以,在這里掌握一些Java后端開(kāi)發(fā)的框架也是很有必要的。
從前端到后端,我們了解到了,其所涉及的知識(shí)點(diǎn)是非常多的。對(duì)于樓主想要獨(dú)立開(kāi)發(fā)一套系統(tǒng)而言,掌握好一種前端開(kāi)發(fā)和一種后端開(kāi)發(fā),此時(shí)你也就具備了獨(dú)立開(kāi)發(fā)一套軟件系統(tǒng)的能力。
關(guān)注我,不定期分享好玩科技知識(shí),帶大家一起體會(huì)探索科技的那份獨(dú)有思考和樂(lè)趣。
0基礎(chǔ),也可以獨(dú)立開(kāi)發(fā)一套功能完備的軟件系統(tǒng)。
當(dāng)然,你還需要一個(gè)功能強(qiáng)大、上手快的開(kāi)發(fā)工具,比如云表企業(yè)應(yīng)用平臺(tái)。(以下簡(jiǎn)稱(chēng)云表)
在云表這里,即使你對(duì)IT技術(shù)一竅不通,不懂?dāng)?shù)據(jù)庫(kù)知識(shí),也不會(huì)任何的如VBA等軟件開(kāi)發(fā)輔助工具的使用方法,也完全沒(méi)有關(guān)系。
你只要有自己的業(yè)務(wù)邏輯,就能在和excel很像的界面,拖拉拽,以畫(huà)表格的形式,“畫(huà)”出功能可隨需增刪查改的企業(yè)級(jí)個(gè)性化管理軟件,包括ERP,WMS,OA,BI,PLM,CRM,進(jìn)銷(xiāo)存,項(xiàng)目管理等。
恒逸石化
并且,還可形成“All in One”的一站式管理體系,各系統(tǒng)之間數(shù)據(jù)互通,主流信息無(wú)縫集成。
中山誠(chéng)威
比如,藍(lán)牙打印,自定義報(bào)表模板打印,鬧鐘提醒,消息推送,權(quán)限控制,流程審批,多人協(xié)同,工作流,小程序,H5,微商城,一物一碼,內(nèi)網(wǎng)穿透,外網(wǎng)映射,外接數(shù)據(jù)源,數(shù)據(jù)透視,數(shù)據(jù)分析,集成封裝釘釘、企業(yè)微信、用友、金蝶等外部系統(tǒng),當(dāng)然,你也可以拿它來(lái)對(duì)接PDA,地磅,電子秤,高拍儀,GPS盒子等工業(yè)物聯(lián)網(wǎng)設(shè)備,生成移動(dòng)端app......
對(duì)了,它還是可以免費(fèi)使用的,提供了一款永久免費(fèi)使用版本,該版本功能與云表平臺(tái)的區(qū)別,僅在于并發(fā)數(shù)的不同。
篇幅所限,就只介紹到這里,事實(shí)上,通過(guò)云表還能解決更多問(wèn)題。如果你感興趣,可以留意下方軟件免費(fèi)獲取方式:
方法一:
1.頭條app搜索“云表平臺(tái)”。
2.進(jìn)入官網(wǎng)之后,在右上角三條杠處,找到“登錄”。(或者進(jìn)去后直接點(diǎn)擊“免費(fèi)注冊(cè)”)
3.信息填報(bào)完畢,即可在“管理控制臺(tái)”免費(fèi)獲取。
方法二:
點(diǎn)擊我的頭像,進(jìn)入個(gè)人主頁(yè)后,在下方找到“免費(fèi)下載”。
包括ucloud,中鐵,中冶,許繼電氣,恒逸石化等20萬(wàn)+的企事業(yè)單位或機(jī)構(gòu),都在使用它,所以你可以打消技術(shù)支持方面的顧慮。
不好意思,這個(gè)坑我正在踩!
我花一年弄了個(gè)軟件,duang云收藏夾,已經(jīng)花了快五十萬(wàn)了,但估計(jì)這只是個(gè)開(kāi)始!盈利還沒(méi)見(jiàn)到苗頭!
去年疫情導(dǎo)致我的海外電商不太好做,我就琢磨自己做個(gè)軟件工具,這樣起碼用戶(hù)穩(wěn)定,不想電商每次一個(gè)新產(chǎn)品推廣都是新投入,有收獲還好,大多數(shù)產(chǎn)品的前期投入都是打水漂了!我運(yùn)氣好遇到了幾個(gè)好的產(chǎn)品。
基于這種思想我就開(kāi)始了軟件開(kāi)發(fā)之路!
七八年前搞過(guò)軟件,但這么多年了沒(méi)碰過(guò)技術(shù),所以就只有走代開(kāi)發(fā)和招人自己組隊(duì)開(kāi)發(fā)兩條路。
基于風(fēng)險(xiǎn)我選了第一條路。
進(jìn)去就一個(gè)坑,一個(gè)搞電商系統(tǒng)的滿(mǎn)口承諾搞定,結(jié)果給了幾萬(wàn)塊錢(qián)他就直接粗暴簡(jiǎn)單地把一個(gè)電商平臺(tái)軟件改了一下給我,沒(méi)有前后端分離,沒(méi)有任何數(shù)據(jù)記錄,沒(méi)有支付接口,拿了80%的錢(qián)后就消失了。
但好歹界面結(jié)構(gòu)有點(diǎn)我想搞的產(chǎn)品的意思了,所以又找了第二波。
大概花了十幾萬(wàn),出來(lái)了,但這個(gè)團(tuán)隊(duì)是后端技術(shù)牛用GO開(kāi)發(fā)的,前端技術(shù)爛得一坨×××PHP啥的幾種混搭,我讓朋友看,朋友直接瘋了。
我估計(jì)付費(fèi)請(qǐng)用戶(hù)來(lái),用戶(hù)都不來(lái)!
所以又搞了第三波,自己招人!
招聘了三個(gè)月來(lái)了兩撥,第二波招的算是靠譜穩(wěn)定了,但錢(qián)也花得嘩嘩嘩的,基本上開(kāi)發(fā)了快一年五十萬(wàn)是沒(méi)了!
所以我的感覺(jué)是,精通這事你別談,軟件是團(tuán)隊(duì)協(xié)作的活,一個(gè)人精通沒(méi)用的,得各有所長(zhǎng)然后合理分工!獨(dú)立開(kāi)發(fā)者的路很窄,只能說(shuō)做個(gè)產(chǎn)品模型,如果上市規(guī)模商用的話很難行得通!
我是誰(shuí)?我在哪里?我要做什么?我為什么做?
以上明確后就可以做項(xiàng)目了,技能,會(huì)裝系統(tǒng),會(huì)裝軟件,讓百度教你不會(huì)的,理解別人的代碼,變成自己的代碼。
我半年時(shí)間自己做了一套系統(tǒng),包含瀏覽器,安卓管理,安卓瀏覽,tcp服務(wù)器,后端,數(shù)據(jù)庫(kù),web服務(wù)器,windows2008, centos等等。
知識(shí)點(diǎn)涉及,html5,css,js,php,aspx,mysql,易語(yǔ)言,易安卓,mssql, linux命令,h3c指令,各種js api. 獨(dú)立做開(kāi)發(fā),遇到問(wèn)題只能自己解決,碰到什么學(xué)什么,以上除了aspx比較復(fù)雜,其余都可以很快入門(mén),思維方式和編寫(xiě)風(fēng)格也比較相似,熟悉其中一個(gè)后,其他的就很快了,html css做的好看還是要理解,用點(diǎn)css框架什么的??偟膩?lái)說(shuō),一個(gè)人做要活全。用自己擅長(zhǎng)的方式解決問(wèn)題,代碼不必追求高效,先實(shí)現(xiàn)需求。
最后說(shuō)一句,如果自己沒(méi)啥事干,重復(fù)造輪子也是一種學(xué)習(xí)的方式。
0
回答0
回答7
回答1
回答8
回答0
回答0
回答9
回答9
回答2
回答