疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

零基础想自学软件开发,可行吗?


 

   零基础想自学软件开发,可行吗??从零开始学编程到高薪就业的工程师的建议:

 软件工程师陈同学:

  首先,明确一下,编程语言就是一工具,语言是语言,算法是算法,同一种数据结构和算法,基本任何语言都可以实现。语言是用来干什么的?就是用来和计算机打交道的,就像你跟美国人说话用英语,跟日本人说话用日语一样,跟计算机说话需要用一种他能听懂的语言。其实计算机只明白0-1字节码,也就是机器语言,但是这玩意太难了吧,人类哪记得住?于是就有了汇编语言,经过编译可以变成机器语言,但是学过汇编的都知道,一条一条的指令,实在麻烦。所以才诞生的很多高级语言。高级语言非常接近我们的自然语言,所以我们可以很容易地使用它。就像我们平时接触的VB,C/C++,Java,Python,C#,Scala,Pascal,Lisp,JavaScript,Swift……不胜枚举,不同语言干不同的活,可以说各司其职,就像R用来数据分析,JavaScript用来写前端,C用来写嵌入式,Swift开发IOS,当然有的可以干好多事,像C#,C++,Python,Java这种,我们首先应该选择一个方向,比如我们对哪一块感兴趣,然后再去进行语言的选择。当然,入门无所谓,学C就可以,语言都是相通的,主要理解思想。

  其次,一旦选择好一个方向,比如Java,就要了解整个脉络,了解这个体系。我觉得学什么东西都应该有章法可循,成体系,知前后,懂因果,由浅入深,循序渐进。无体系地学习,就像没有图纸建房,东拼西凑,毫无章法可寻,只知皮毛,而首尾不能相接。我们应该知道整个前进的方向,亦或整个知识的体系架构,让自己有章可循,不至于仿佛跌入茫茫大漠,无可辨向。比如第一步,我要学习基础语法,什么是变量,判断,循环,常用数据结构。然后就是API了,我要学习怎么和硬盘交互,文件IO,怎么和网络交互,socket通信,怎么用多线程多进程,怎么用数据库,怎么用xml,怎么发送http等等。接下来你要考虑我是走web这条路,还是去学Android,还是学大数据?比方确定web,你要学前端,html,css,js,学一些常用框架,jquery,bootstrap,Ajax交互。接下来学servlet,jsp,这是java自带的服务器编程组件,学完就能做网站了。但是企业还会用框架,所以学学spring boot,spring mvc,spring框架,mybatis,struts2什么的,总之很多,像mvc学一两种即可,orm也是,重在了解思想,这样就大概了解了脉络。

  最后,一定要练习练习练习。学基础的时候多敲代码,做一些小例子,不要怕麻烦,常用API用熟练。以后多做项目,在做项目的过程中会学习很多。可以去github上面下载自己感兴趣的代码,看看别人怎么写的,照猫画虎。还可以自己做一些小东西。做的多了,就要看源码,多买一些比较深的书,像spring原理,Java并发编程,effective c++,设计模式,jvm虚拟机这样的书去啃。

  软件工程师蔡同学:

  1,先学C,

  2,然后学基本的数据结构与算法,链表、二叉树、排序、Hash、红黑树,

  3,然后学汇编,基本能看懂gcc -S出来的汇编文件,

  4,然后学Linux环境下的C编程,参考书“Unix环境高阶编程”、“Unix网络编程”,涉及进程管理、内存管理、文件系统、网络编程、Epoll异步事件机制等,

  C语言、数据结构和算法、OS,这三项的基础知识学习就到此为止了,

  5,学C++,不需要精通,也精通不了,会C With Class式的C++就行,了解OOP的思想,会用STL里的常用容器,

  6,数据库,会写简单的SQL语句,会简单的安装使用Mysql,

  到这里,整个编程的基础知识就学完了,下面可以选方向了:

  1,web前端,去学JS,HTML等,我不大了解前端,不多说,

  2,Web后台,技术栈较多,C++、Java、Node JS、Go、Python,不同企业用的不一样,看你自己爱好选一种语言,

  但要懂OS和数据库,数据库一般要会Mysql和Redis,会一种该语言下的Web框架,

  3,Android App,必须学Java,学Android开发的基础知识,学JNI机制,找一本Android编程的书去学就好,

  4,IOS,学OC、Swift等,我不大了解,不多说,

  5,嵌入式,必须学习Linux内核,参考书“深入Linux内核架构”、“Linux设备驱动程序”,

  最好对数字电路有一定了解,会用示波器,有利于和硬件工程师沟通,

  6,流媒体音视频,FFMPEG基本包含了所需的几乎全部知识,要了解HTTP、HLS、RTMP、FLV、TS,H264、AAC,FFMPEG里都有,

  最好会OpenGL,会NEON,

  7,CV,会用OpenCV,了解CNN,会用Tensorflow,会Python,

  参考书霍恩的“机器视觉”,Tensorflow的官方文档,“神经网络原理”等,

  最好懂NEON、CUDA,做性能优化时可能用到,

  8,NLP,不大了解,但也要会用Tensorflow,参考书“离散时间语音信号处理”,

  9,大数据,Hadoop、Scala等,不大了解,

  10,游戏编程,C++、OpenGL、U3D,cocos2D,

  11,在一些大公司里,C++服务器编程(视频云、CDN),或者本身就是搞通讯设备的(华为、中兴),需要了解Linux内核的网络协议栈,了解Netfilter机制,小公司一般不搞这个.

  零基础想自学软件开发,可行吗?

  不会学=学不会

  不会学≠学不会

  那么,

  在国内,要“会学”有多难?

  现在来说,

  来疯狂软件就够了!

 

  没有目标?没关系。这里有无数有着坚定目标的同路人,被他们的前进的步伐裹挟着的你,原地踏步就代表着退步,进步从来都是不由自主的。

  没有系统专业的学习资源?疯狂软件教育中心专注高级软件编程,以“十年磨一剑”的心态打造全中国最强(不是之一)疯狂Java学习体系:包括疯狂Java体系原创图书,疯狂Java学习路线图,这些深厚的知识沉淀已被大量高校、培训机构奉为经典。

  专业名词太多?没有人指点?疯狂软件教育的老师会全天候指导和随班陪学,即使毕业工作后也提供远程技术指导。疯狂软件教育中心师资阵容强大,由国内著名疯狂Java体系书籍作者李刚老师担纲首席讲师,疯狂Java精英讲师团队肖文吉、罗文强、罗春龙、徐磊、黄勇等老师现场授课。还有大量具有丰富实战经验的老师同台授课。