工程人如何学习编程?

一、如何自学

1.1 三个阶段

1、新手阶段

状态:一无所知

基本要求:

1、掌握该编程语言的领域特定知识

比如基本语法、关键字等,要掌握最基础的东西。

2、注意细节

一般我们新手入门都会跟着教程走,即使跟着教程走,也可能出问题,比如单词拼写错误。要学会分析错误、解决错误。

3、教程的局限性

教程不可能把所有的解决方案都提供,如果身边有人,可以请教他们,如果没有人则学会自己解决问题。学会信息检索(搜索),途径有很多,不止是书籍,还有视频、博客、官网、论坛等等。

4、不可能一口气吃成胖子

不要想着解决问题的时候,就什么都知道了。更多的情况是在面对新的问题的时候,去学习,去解决问题。这个时候最重要的就是心态,所有的专业都经历了长时间的发展,其中的专业知识是非常多的,我们既要认识到学海无涯,同时也不能因为自己的无知而逃避放弃。放空自己的思想,尽可能的接纳新事物,专注于解决问题,而不是想自己为什么不能做这做那。

5、是否能进入下一阶段的标志

见识了足够多的错误,知道为什么会产生这些错误(报错信息),以及对应代码位置。在新写程序时,能够灵活组合应用之前接触的代码,而不是每次都要按照教程指导来做。当不依赖于教程,也没有别人的指导的情况下,能够独立解决问题。

2、第一个拐点阶段

状态:知道了一些,但是实际开发,感觉困难。

基本要求:
1、遇到新问题,想方设法地去解决。

2、超出自己的极限,不要停留在舒适区。

例子:

比如书上讲了文件处理的时候,通常会有txt举例子,那excel呢?
A方法可以解决问题,后来知道了更好的解决方法,那么是否可以尝试用B方法呢,做工程也是这样,采用更好的方法。

3、第二个拐点阶段

状态:程序写好了,但是程序性能不佳。

基本要求:掌握常见的数据结构和算法,并能灵活运用。

例子:三维空间中有100万个点,如何找到距离某个点最近的几个点?遇到这种问题,如何选择合适的数据结构和算法,往往是关键。

1.2 二八原则

1、二八原则

社会上20%的人拥有80%的财富,编程同样如此。在编程基础中,有20%的基础知识是最需要掌握的,需要我们花80%的时间去学习。

2Pass原则

不懂就过,先用起来,后面再慢慢去懂。

3Learn 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平台开发

1CAD

功能:平面设计

可用语言: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)

建议:看书。

2Civil3D

功能:针对路线的平面设计。可以理解为对CAD的扩充。

可用语言和CAD一样。

书籍:AutoCAD Civil 3D .NET二次开发,王磊。

网站:同上。

建议:CAD二次开发是基础,再配合C3D特有的API。

3Revit

功能:三维设计。

可用语言:VB、C#、C++、python。推荐C#和Python(dynamo)。

视频:面向工程人员的Revit二次开发01_Vs的认识与使用_哔哩哔哩_bilibili

书籍:《Autodesk Revit二次开发基础教程,官方》、《API开发指南Autodesk Revit,宦国胜》

网站:官方网站和论坛,博客专家The Building Coder (typepad.com)

建议:看书是不够的,很多API不适用了,建议跟着视频入门,同时看API文档。

4inventor

功能:三维设计。

书籍:Inventor二次开发学习指南,梁晓东。

网站:官方网站论坛、博客专家Brian Ekins、Adam Nagy,Mod the Machine (typepad.com)

5Navisworks

功能:整合平台。可用语言C#。

书籍:Naviswork API开发指南。

博客专家beyonddesign

6Forge

功能:模型进入云平台。

可用语言:

前端: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平台开发

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-06-04 20:52  之涣  阅读(318)  评论(0)    收藏  举报