工程人如何学习编程?
一、如何自学
1.1 三个阶段
1、新手阶段
状态:一无所知
基本要求:
1、掌握该编程语言的领域特定知识
比如基本语法、关键字等,要掌握最基础的东西。
2、注意细节
一般我们新手入门都会跟着教程走,即使跟着教程走,也可能出问题,比如单词拼写错误。要学会分析错误、解决错误。
3、教程的局限性
教程不可能把所有的解决方案都提供,如果身边有人,可以请教他们,如果没有人则学会自己解决问题。学会信息检索(搜索),途径有很多,不止是书籍,还有视频、博客、官网、论坛等等。
4、不可能一口气吃成胖子
不要想着解决问题的时候,就什么都知道了。更多的情况是在面对新的问题的时候,去学习,去解决问题。这个时候最重要的就是心态,所有的专业都经历了长时间的发展,其中的专业知识是非常多的,我们既要认识到学海无涯,同时也不能因为自己的无知而逃避放弃。放空自己的思想,尽可能的接纳新事物,专注于解决问题,而不是想自己为什么不能做这做那。
5、是否能进入下一阶段的标志
见识了足够多的错误,知道为什么会产生这些错误(报错信息),以及对应代码位置。在新写程序时,能够灵活组合应用之前接触的代码,而不是每次都要按照教程指导来做。当不依赖于教程,也没有别人的指导的情况下,能够独立解决问题。
2、第一个拐点阶段
状态:知道了一些,但是实际开发,感觉困难。
基本要求:
1、遇到新问题,想方设法地去解决。
2、超出自己的极限,不要停留在舒适区。
例子:
比如书上讲了文件处理的时候,通常会有txt举例子,那excel呢?
A方法可以解决问题,后来知道了更好的解决方法,那么是否可以尝试用B方法呢,做工程也是这样,采用更好的方法。
3、第二个拐点阶段
状态:程序写好了,但是程序性能不佳。
基本要求:掌握常见的数据结构和算法,并能灵活运用。
例子:三维空间中有100万个点,如何找到距离某个点最近的几个点?遇到这种问题,如何选择合适的数据结构和算法,往往是关键。
1.2 二八原则
1、二八原则
社会上20%的人拥有80%的财富,编程同样如此。在编程基础中,有20%的基础知识是最需要掌握的,需要我们花80%的时间去学习。
2、Pass原则
不懂就过,先用起来,后面再慢慢去懂。
3、Learn by doing
跟着敲,才能会,要举一反三,注意细节。
4、主题学习
《如何阅读一本书》
1、不要说哪一本书不好,直接找到对应这部分的主题,明白了就行。
2、搜索问题答案:如何学习编程
用百度、Google、Bing都能搜到不同的答案;用英文的How to learn programming。
通过不同的途径获取不同的信息。
3、主动学习:越主动,学习效果越好。
5、费曼技巧
学习金字塔。最高境界,能够教授给他人。
1.3 两个认识
1、拐点心态
会接触到一种新的学习技巧,说白了就是独立解决问题的能力,而不是以前的填鸭式的教学。
2、接受
程序开发是不断学习的过程,因为你总会遇到新的问题,接受这件事情。就像软件的不断升级更新。
1.4 一个能力
面对未知,如何解决。
二、主流编程语言介绍
2.1 C语言
面向过程,一般用于底层开发,比如操作系统、嵌入式开发。
学习资料,视频可在B站上找,按自己的喜好选择。书籍可以在豆瓣查看评分。官网也是一个很好的学习资料来源。
2.2 C++
基于C语言发展而来。面向过程、面向对象。
通常用于图像开发和游戏开发等。
2.3 Java
面向对象。通常用于移动开发等。
2.4 C#
面向对象。桌面开发等。二次开发
2.5 VBA
面向过程。桌面开发等。
2.6 Python
面向对象。广泛用于科学计算、人工智能、大数据。
2.7 JavaScript
面向对象。网页开发。
2.8 Fortran
面向过程。通常用于科学计算。
三、ABC三大平台
3.1 Autodesk平台开发
1、CAD
功能:平面设计
可用语言:AutoLisp、VB
C#基本开发(推荐)、C++深入推荐(ObjectARX)
资料:视频,关键词查找。
书籍:C#《Auto CAD VBA&VB.NET开发,曹洪飞》《深入浅出AutoCAD.NET二次开发,李冠忆》C++《objectARX开发实例教程,张帆》,或者豆瓣+关键词。
网站:官方网站AutoCAD Platform Technologies | Autodesk Developer Network、讨论论坛AutoCAD - Autodesk Community、博客专家Through the Interface (typepad.com)。
建议:看书。
2、Civil3D
功能:针对路线的平面设计。可以理解为对CAD的扩充。
可用语言和CAD一样。
书籍:AutoCAD Civil 3D .NET二次开发,王磊。
网站:同上。
建议:CAD二次开发是基础,再配合C3D特有的API。
3、Revit
功能:三维设计。
可用语言:VB、C#、C++、python。推荐C#和Python(dynamo)。
视频:面向工程人员的Revit二次开发01_Vs的认识与使用_哔哩哔哩_bilibili
书籍:《Autodesk Revit二次开发基础教程,官方》、《API开发指南Autodesk Revit,宦国胜》
网站:官方网站和论坛,博客专家The Building Coder (typepad.com)。
建议:看书是不够的,很多API不适用了,建议跟着视频入门,同时看API文档。
4、inventor
功能:三维设计。
书籍:Inventor二次开发学习指南,梁晓东。
网站:官方网站论坛、博客专家Brian Ekins、Adam Nagy,Mod the Machine (typepad.com)
5、Navisworks
功能:整合平台。可用语言C#。
书籍:Naviswork API开发指南。
博客专家beyonddesign
6、Forge
功能:模型进入云平台。
可用语言:
前端:HTML/CSS/JavaScript
后端:NodeJS/C#/GO/PHP/JAVA
资料:Forge 技术空中讲堂-开发的基本技能要求 (qq.com),在腾讯视频中搜索Forge空中课堂。
网站:入门Autodesk Forge;进阶:forge/core: Forge Core Framework APIs and Implementation (github.com);问题讨论:Newest 'autodesk-forge' Questions - Stack Overflow;博客Community Blog | Autodesk Forge
建议:云化是未来技术发展方向,可以多研究。BIM+GIS,智慧城市。
3.2 Bently平台开发
3.3 Catia平台开发