想要自学it,得明白以下几点
1 应该选择什么编程语言
可能困扰编程新手最多的一个问题是我应该学什么编程语言或者我需要学习哪些课程才能做出一个web、一个app,很多人一直纠结这个问题,陷入了东学一点、西看一点的死循环,到头来啥也没学好,这会很浪费时间。
刚上大一的时候,我也很想知道应该选择什么编程语言。我问了很多人,网上各种查资料,但所能得到的答案都很片面,多数对这个问题答非所问,总是回答说“某某编程语言难”,“某某编程语言性能好”。其实作为初学者,我们对计算机体系都不了解,就不要过多地去纠结性能,或者难易等因素,原因我等下再说。
如果你有明确的方向,那么很好选择。如果你想做算法、机器学习方向,那么python是最好的选择。如果你想做web开发,java、php等都可以。如果想做一些更底层的工作,那么就可以选c。当然这是建立在你有明确方向的基础上。可是,很多人都没怎么接触过计算机行业,特别是和我一样刚入学就被调剂到计算机专业的人。对这些同学来说,各个编程语言就只是个名字,除了叫法不一样,你根本不知道它们有什么差别。所以索性不要纠结了,我替你选一个吧。
如果你是在校大学生,那么你有大把连续的时间,就先学习c,然后再学c++。我个人是学c入门的,也许很多人不理解我为什么推荐学c,因为c和c++都很难、很复杂,看起来并不适合入门。然而正是它们的难和复杂才能让你更好地理解计算机系统计算机系统不是指 *** 作系统。学习编程不是学习编程语言,而是学习一个计算机生态,即一个庞大的知识体系。只会编程语言而不理解整个计算机的体系,就像只会写字而写不出好文章。了解c/c++和了解计算机系统是极为贴合的,向下可以帮助你更容易地理解 *** 作系统、编译原理、计算机网络、计算机组成原理,为什么呢?因为较为底层的东西很多都是用c实现的,和系统的贴合度极高,很多教材源码甚至教程,在讲述这些知识的时候都是用c或c++作为媒介。而向上,c++面向对象的机制,也可以做出一些应用,譬如五子棋游戏等,也不会显得那么枯燥。花个小半年时间了解c和c++,之后你就会觉得看书、看资料可以轻松很多。
如果你是一个上班族,但是刚刚学习编程,可能学c和c++对你来说有些复杂和困难,因为学习它们确实是很需要时间。你们不像在校生那样有大把的连续时间,而零碎的时间去学习一个比较复杂的东西效果不见得有那么好,所以可以先学一些更容易见效的编程语言,从python入手吧,至少能快速做出一些小应用,不至于丢失了兴趣,但是真的要入门编程又还得看看与计算机系统相关的书籍,这样才能更深层次地去编程,譬如深入理解计算机系统这一本书可以读很多遍,这本书把整个计算机系统给串起来了。
2学习编程,我需要学习哪些课程?
我要学哪些课程?我为什么要学习如高数、离散数学、线性代数、概率论等课程?
这个问题也是之前困扰了我很久的问题。不过我现在想通了,对于高数、离散、线性代数、概率论等课程,很好解释,做算法的同学肯定知道为啥要学习这些课程。机器学习中会大量用到上述提到的课程,所以会比较好理解。对在校生而言,学校开设的很多课程我们不知道为什么要学,我们很疑惑,不知道学它有什么用,这个时候我们就会很纠结,还会产生抵触情绪。这很正常,因为我们学习得不够深入,自然不能理解它们的用处。
在我看来,大学本科课程更多的是面向“面”的教学,即什么课程都教给你一些,但是又讲得不那么深入;而工作或者读研,更多的则是面向“点”的学习,用到的知识更专。本科时,学校也不知道你以后是去搞算法、还是搞架构、还是搞服务器开发,甚至去搞硬件,所以学校需要你学很多课程,至少有个了解。对学生来说,一方面可以从中选择自己感兴趣的点;一方面也可以对未来的就业方向有些启发。所以即使像数电、模电等课程,虽然之后可能用不着,但是你也要学,并且会花费大量的时间。虽然你最后不一定去搞硬件,但是这些课程也会让你更容易去理解一些知识,比如cpu中的逻辑器件。
如果你在大一的时候就有一个明确的定位,知道自己今后想从事哪方面的工作,课程与课程之间是可以调一下优先级的。不过像大学物理,这种课程确实是对编程没有帮助,但是像我前面所说的,大学教育更注重广度,大物等课程可能就是为了给你普及生活常识吧。
其实,大学教育的问题是普遍存在的,我认为我们学习一项技能的时候,应该采取的是项目驱动式学习,即需要用到什么东西时不会了再去学,而不是先填鸭式的都填进脑子,并且在学习的过程中我们还不知道它这是干嘛用的,等之后用到了,甚至不记得自己学过,反而查资料才会想起:哦,原来我之前学的xx科目是这个用处啊,可是我当时并没有好好学。很多时候学生时间的浪费可能还是要怪老师、怪学校,他们一开始没给我们做好充分的课程介绍。所以,在经过比较多的编程和项目实践后,我认为一个比较好的学习方式是,改良版的项目驱动学习法。即:
学习一段时间,做个小项目,将做项目遇到的问题记下来,针对性地学习相关知识,然后再实践,再学一段时间理论,让知识成网状发射状地变大。当然,项目驱动式学习有一个弊端,就是每次学习的知识都是项目所需要的,很零碎、不成体系,所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本书,或者一个相关问题的完整介绍,这样就很容易把一些知识成体系地串起来。这样一段时间下来,慢慢的,你就知道我们为什么要学那么多科目,学这些科目能干什么。
谈到数据获取,可能最容易想到的是爬虫,爬虫是一个在知乎上被说烂了的话题,所以我不想多说它是什么。很多时候有人觉得爬虫简单,为什么呢,因为有现成的框架,所以获取少量的数据就比较容易。但是当你需要爬取的数据很大的时候(比如我之前抓取了知乎500万用户的数据,在下班的时间、用自己家里普通的pc,计算机性能并不是那么好,比不上服务器,又要在不被封IP的情况下抓到这么大量的数据,然后对数据进行清洗,最后还要可视化展示),使用现成的爬虫框架就并不是那么容易实现了。况且,我需要抓很多数据源,并不是一锤子买卖。所以我选择去开发一个系统,即在现有的框架下进行二次开发,搭建一个属于自己的爬虫系统,并植入一些算法。我在系统中添加了很多中间件,直到现在,它还可以在10分钟内就部署一个能抓取大量数据的爬虫应用。
问题一:什么叫 SDK二次开发包 百度一下更清楚,S鼎ftware Development Kit, 即软件开发工具包
一般情况下,国外的软件在销售的时候,有很多也会同时提供这个工具包,
用于这个软件的二次开发。
问题二:“支持SDK二次开发”是什么意思? 10分 SDK 就是英文Software Development Kit 的缩写
中文意思是:软件开发工具包
SDK是提供给开发人员进行应用程序开发的,这胆程序员就可以快速的建立应用软件,而省去了编写硬件代码和基础代码框架的过程
其实就是软件工程师最喜欢的硬件。
问题三:怎样用sdk开发包进行二次开发 车牌识别系统生产厂商,除了发布自己的一体机之外,还有一些支持开发的SDK,我们可以根据他们的提供的SDK开发包来开发适合我们自己需求的软件,里面的开发文档就是二次开发包了,火眼臻睛有提供专门进行二次开发的车牌识别系统SDK,你可以在百度里搜到他们的相关信息。有的SDK开发包可以使用C++、VB、VC语言的编程,但也不一定,你可以根据SDK包里的例子进行对应的语法转换。
问题四:监控摄像机,SDK包二次开发什么功能? SDK二次开发包,主要基于摄像机的控制信令和码流输出控制的编程,实现一些镜头控制、码流转换、亮度、灰暗度等功能的调节。
问题五:程序的二次开发包如何开发?请教大侠们!! 一般SDK包都有相关的开发说明,甚至还有DEMO例程
问题六:人脸识别二次开发包 同是程序猿,深表同情,建议你去FaceVisa那找,我们群里好多去那拿的。
问题七:二次开发是什么?有哪些呀?怎么学呀? 二次开发是相对于底层开发而言的。
底层开发:所谓的底层开发是指通过计算机编程语言,在不基于(利用)其它平台软件的情况下
实现新的算法、模块,以及一款独立的新的平台软件。由于底层开发不基于别人的软
件平台,有很强的独立性;同时开发者可以从底层算法的基础上实现,各种功能的
优化和突破。具有很强的独立性和灵活性。但是由于是底层开发一切都要重头做起,
难度相当大,软件开发的周期相当长,同时为了更好地追求速度和可移植性多采用
较为低级的语言如:C++。而不提倡采用C#,Java等。
二次开发:所谓的二次开发是指通过计算机编程语言,在基于(利用)其它平台软件的情况下,
实现各种符合自主需要的新的模块、以及新的软件。由于二次开发是基于别人的平台
下开发出来的,注定了它不能脱离自己开发所依据的平台软件或者是该平台所发布的
运行时;同时很难或者说无法再算法和功能上实现新的突破。具有很强的依赖性和局
限性。但是由于是二次开发,许多困难的底层算法部分已经被制作成各个模块,可方
便开发人员随时调用,开发起来方便快捷,大大缩短了软件开发的周期。多采用的
开发语言为:C#、VB、Java等。
简单来说:底层开发是中国创造,二次开发是中国制造,其中的技术含量可想而知!
二次开发有哪些:那就得看你要对什么东西进行二次开发了。要是对AutoCAD进行二次开发那就
是AutoCAD二次开发;对ArcGIS进行二次开发那就是ArcGIS二次开发。以此丁
推。可以说有多少可以依据的平台软件就可以有多少中二次开发。
怎么学:一、看你想在哪一方面发展了,例如:如果你想在GIS行业发展肯定要会一款GIS的二次
开发,而GIS平台软件也多种多样,如:ArcGIS、MapGIS、SuperMap等等,你可
以选一款市场前景大的平台软件进行二次开发(首推:ArcGIS)。
二、二次开发也是软件开发,只要你有过强的计算机语言功底和开发思想,一切问题
都会迎刃而解。要知道一通百通的道理。有过强的计算机语言功底和开发思想才是
成功的王道!
问题八:什么叫个人数据二次开发利用 什么是二次开发?
二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。
为什么要二次开发?
随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。这就是我们常听的:站在巨人的肩膀上,你将看的更远。所以国内很多公司需要二次开发的人才。
怎么做二次开发?
第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。
第二,你要对这个开源产品的功能和使用要有比较熟丹,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。
第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。简单点说,就是数据库,代码逻辑,文件目录的熟悉。
第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求
介绍PHP的开源产品的二次开发的基本要求:
第一, 基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的)
第二, 熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能
第三, 要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的,等等
第四, 熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展
经过二次开发后,你能获取到的是什么呢?
你能完成你的需求,你能积累经验,这里的经验有你自己的,也有别人的。所谓别人的,就是在你做这个二次开发的时候,你能吸收到这个系统的精华,然后融入到你自己的思想里,你还能总结项目架构的经验。有句话说的好,就是:聪明的人会把别人的失败的经验当作自己的经验,而傻的人就是自己无数次体验失败后才作为自己的经验。
二次开发不仅仅是开发,而更重要的是吸取精华,总结经验,理顺思路,少走弯路,提升自己。
如果是楼主所说的mis/it部门
起薪最少应该有5000人民币
那也要看个人本事如果能力强又是找到好的福利公司
年薪+员工分红配股 少说有30万人民币
以台湾联发科公司来说工作年资有5年的员工
身价最少也有200万人民币
有前途,企业的业务模式千变万化,特殊的业务流程,象用友或者金蝶标准产品无法很好的实现,只能采取变通的方式,效果不是很好。所以很多客户都有二次开发的需求。而且二次开发的利润也比较高。
祝成功
概括来说,开发中常用到的功能:串口通信、网口通信、数据库访问、数据加解密处理等等。这些方面的知识都要掌握的,细说的话主要有以下几个方面:
一、语言相关
1、基础(Basic)
(1)变量与基本类型:语言内置类型、常量、变量的初始化、变量的作用域、变量的 限定符、变量引用、枚举; (2)typedef 和#define;
(3)数值与指针:数组定义与初始化、多维数值、指针 *** 作;
(4)表达式:算术/逻辑计算、位运算、优先级、类型转换;
(5)语句:简单语句、声明/定义语句、复合语句、条件/循环控制语句、异常处理语 句;
(6)函数:函数声明、参数传递、堆栈概念、函数重载;
(7)标准IO:条件状态、缓冲区、文件流、字符流、本地化;
(8)类和数据抽象:类的定义与声明、类的构造函数、静态成员、拷贝构造函数、 *** 作符重载、类型转换;
(9)面向对象编程:数据(封装)抽象、继承、多态(动态绑定);
2、进阶(Advance)
(1)模板与泛型编程:模板定义、实例化、类模板成员、重载、特化; (2)智能指针:auto_ptr、shared_ptr、scoped_ptr;
(3)STL容器:顺序容器(vector、list、deque、queue、priority_queue、string)和关 联容器(map、set、multimap、multiset); (4)STL算法:迭代器、算法; (5)常用复杂数据结构:hash_map、boostany、boost array、boost regex、boost variant、 boost multi_array、boost pointer_container;
3、高级(Expert)
(1)高级泛型编程:表达式模板、模板元编程、Concept编程;
(2)程序架构,内存池,线程池;
(3)高级抽象:boostmpl、boostlambda、boostfusion、boostproto;
(4)范式应用:boostspirit;
(5)应用程序库:boostasio 、boostgraph、blitz++、Loki、CGAL、uBLAS;
二、系统相关
1、基础(Basic)
(1)Windows API之基础服务:文件系统、注册表、内存管理、DLL、多媒体;
(2)Windows API之内核对象:句柄、信号、线程、进程、互斥、事件、文件映射、 命名管道、邮槽、计时器、完成端口;
(3)Windows API之图形设备接口:设备上下文、打印、字体、笔/刷、路径、区域、 位图;
(4)Windows API之图形用户界面:窗口、标题、菜单、状态栏、消息、图标、按钮、 编辑框、组合框、列表框、滚动条、通用对话框;
(5)环境配置及Shell编程:环境变量、右键菜单、属性、关联; (6)Socket编程; (7)Web相关API; 2、进阶(Advance)
(1)MFC/ATL:文档视图结构、对话框、通用控件、OleDB、WinInet; (2)COM、自动化、ActiveX:Office开发、IE插件、VBA; (3)高级图形系统:OpenGL、DirectX; (4)二次开发:ObjectArx;
三、计算相关
1、计算机图形学
(1)向量:点积、叉积、求模、单位化、复合运算;(basic)
(2)矩阵:算术运算、平移/旋转/缩放/错切等变换、求逆、特征值;(basic) (3)四元组合欧拉角:与其他表示转换;(advance) (4)参数曲线/曲面:贝塞尔、(非)均匀有理样条;(advance) (5)三维几何体的构造与描述;(expert) 2、计算几何
(1)几何查找与判断:点与线、线与线、点与多边形;(basic) (2)多边形:简单多边形、凸多边形、多边形三角剖分;(advance) (3)凸壳及其应用;(advance) (4)Voronoi图/三角剖分及其应用;(advance) (5)多边形的交与并;(expert) (6)平面图;(expert) 3、数值计算
(1)数值计算的三大任务:求值、解方程(组)、函数逼近;(basic) (2)数值计算的误差、适定性、稳定性;(basic)
(3)解线性方程组直接方法:Gauss消元法、三角分解法;(basic)
(4)解线性方程组一般迭代方法:基本迭代、Jacobi迭代、G-S迭代、SOR/SSOR迭代; (advance)
(5)解线性方程组的变分迭代法:共轭梯度、预处理共轭梯度法;(expert) (6)解非线性方程组迭代方法:Newton迭代法、Newton-Raphson迭代法、同伦算法; (expert)
(7)求解矩阵特征值:乘幂法与反乘幂法、Rayleigh商迭代法、QR法、Krylov子空间 法;(expert)
(8)插值:多项式插值、样条插值;(advance) (9)数值积分:Simpson公式、Gauss积分;(basic) (10)解常微分方程:欧拉法、Runge-Kutta法;(advance) (11)解椭圆方程:有限单元法、有限差分法、边界元法;(expert)
希望可以帮到您,谢谢!
以上就是关于想自学it,该怎么学全部的内容,包括:想自学it,该怎么学、二次开发包是什么意思、台湾刚毕业大学生做mis/it部门的软件二次开发能挣多少一月等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)