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

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

软件工程师陈同学:

首先,明确一下,编程语言就是一工具,语言是语言,算法是算法,同一种数据结构和算法,基本任何语言都可以实现。语言是用来干什么的?就是用来和计算机打交道的,就像你跟美国人说话用英语,跟日本人说话用日语一样,跟计算机说话需要用一种他能听懂的语言。其实计算机只明白0-1字节码,也就是机器语言,但是这玩意太难了吧,人类哪记得住?于是就有了汇编语言,经过编译可以变成机器语言,但是学过汇编的都知道,一条一条的指令,实在麻烦。所以才诞生的很多高级语言。高级语言非常接近我们的自然语言,所以我们可以很容易地使用它。就像我们平时接触的VB,C/C++,Java,Python,C#,Scala,Pascal,Lisp,Java,Swift……不胜枚举,不同语言干不同的活,可以说各司其职,就像R用来数据分析,Java用来写前端,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机制,小公司一般不搞这个.

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

不会学=学不会

不会学≠学不会

那么,

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

现在来说,

来疯狂软件就够了!

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月16日
下一篇 2018年2月16日

相关推荐