目录

1. 编程

2.代码

3. 软件

4.C语言,JAVA

5.黑客

6. DW

7.总结


有同学在评论区里问我技术方向和发展前景的问题,虽然认真回答了一下,但我的专业毕竟不是那个方向的,只能说了解,远远到不了指导他人的程度。如果是在大学里,最优的解决方案还是找学院里的老师谈,直接找一些管教务的行政老师,或者带你专业课的副教授、教授。大学都在提“职业生涯规划”,你主动去询问,他们不会拒绝你的。

其实不是的,是有本质区别的。学校教的东西虽然旧(比如还有学校在用谭浩强的C语言教材),数据结构算法也是上世纪70、80年代的,但这是基础,本质上不是知识,而是学习知识的能力,是“制造工具的原理”。社会上的培训班教的是“如何使用工具”。这就是培训班、网络课程/视频敢说“一个月搞定JAVA”,“让你7天玩转Python”的原因。单纯说使用,我曾经只依靠工具书,三天掌握了Node.JS和Python两门语言的基本概念,逻辑分支和循环的写法,http web响应,get post, cookie……虽然之前就有相关概念,学习语言只是学习这些概念在语言中的写法,但是三天……这就算学会了吗?那么多人靠Python 和Node.JS吃饭,又有什么底气可以说自己智商比他们都高到不知道哪里去了?

这种速成的程序猿,也可以找到工作。只要会使用工具就好了。对于非科班出身的同学,如果想进一步地发展,脱离重复的体力劳动,我认为最好的方法还是找一套软件工程专业的培养方案,从计算机基础和计算机原理学起,踏踏实实地把数据结构和离散数学、线性代数之类的专业课学一遍。

顺便吐槽下某些冷嘲热讽的答案。

# //分割线// # # //以下是原答案// #

从你的问题可以看出来,大概现在只是知道这些名词,对相关方向有个模糊的概念。但是没有深入了解过。……所以这个问题其实是个深坑。

1. 编程

编程是一种行为,不一定要依赖现代计算机。比如最早的机械式计算机

视频:当用一个数去除以0时机械计算器内部将会如何运转?_趣味科普人文_科技_bilibili_哔哩哔哩

像这种机械式计算器,本质上就是一堆齿轮。但它的设计和制造过程,也属于广义的“编程”

所以我对编程的定义是,使物体按照设计者预先设定好的逻辑和指令运行。

2.代码

代码是编程人员思想的一种体现,在当前这个语境里可以和“计算机语言”相等同。最早的现代计算机语言大概是机器码吧,也就是二进制数。向计算机输入数据时,根据输入次序的不同,可以使二进制数分别代表数据或者指令。比如要完成2+2的运算,“累加”操作指令为10001(瞎编的),就可以向CPU输入 10,10,10001。其中十进制的2,转为二进制,就是10。(这个说起来又是一个深坑……)

后来人们觉得这种机器码太不方便,需要背指令码(事实上一般操作码是8位或者16位二进制数)。于是出现了汇编语言,Fortran, Basic, C语言,JAVA等等等等的初级或高级编程语言。

程序本质上就是一个黑盒,接收输入数据,给出输出数据。所谓的代码,本质上就是上边那些编程语言写成的“文章”。程序设计人员(程序猿)通过If....else....逻辑判断,或者for,while,do...while循环,实现自己处理数据的逻辑。只不过现在高级语言更注重开发效率,更注重可读性,感谢摩尔定律,让编程语言从早期追求执行效率,转为追求降低“人读代码时的理解难度”。

3. 软件

代码本质上是文本,只不过在特定的处理逻辑面前,那些特定的英文字符变得有了特定的意义。这些文本经过逻辑处理,会被“翻译”成机器码,成为后缀名为.exe的程序。(是的,所有编程语言最终会变为机器码,再被CPU执行)。这种程序,就是“软件”。

也许你已经发现了,上一段说的“特定的处理逻辑”,似乎也应该是软件。是的,这种软件叫“编译器”,C语言中常见的“编译”“连接”操作就是调用了编译器。这里又要扯出一个自编译的概念,最早的C语言编译器可能是其它低级语言实现的(比如汇编),仅有累加、乘等少数几个功能。随后第二版编译器可以使用C语言在第一版编译器的基础上实现,比如“减法运算”,本质上就是加一个负数。

以C语言和JAVA为代表的,一般被分为编译型语言。还有一种“奇葩”,叫做脚本语言,或者“解释型语言”。比如JavaScript, python, PHP(宇宙中最好的语言)……它们的特征是无需编译操作,代码以文本的形式存在,需要执行时直接使用对应语言的解释器即可执行代码(本质上也是有编译操作的,只不过用户无感知)。从这个意义上说,脚本语言的“代码”也属于“软件”。

4.C语言,JAVA

这两个都属于国内大学的软件工程必修课程。从语言特性上说,JAVA比C语言要更“现代”一些(面向对象)。与之对应的是C语言的“面向过程”。(就不具体解释面向对象和面向过程了,不然又是一个深坑……)。基于面向对象的思想设计的编程语言更适合人类阅读,开发效率更高,但一般来说执行速度不如面向过程语言。因此现在C语言主要用在单片机、嵌入式系统等工业领域,一般来说工业CPU主频较低,性能很差,但胜在成本低,稳定,或者说“更接近硬件层”。而JAVA被用在桌面应用开发、Web网站建设,还是安卓APP开发的基础,更接近应用层。

当然C语言一系有一个神坑,叫做C++。据说求职时千万不要在简历上写“熟悉C++”或者“精通C++”,因为你越了解C++,越觉得自己什么也不会…………

有一点要说明的是,JAVA能做的事情C语言一定也能做到,PHP, Python, JavaScript甚至那个搞笑的Brainfuck语言也一定可以做到。只是要考虑哪种语言更适合你的需求,比如用C语言做一个Web网站,你可能需要从头自己实现一个HTTP服务器,而JAVA就不需要。所谓的“高级编程语言”,都是建立在其它初级语言的基础上的,并且前人都替你完成了那些常见的、基本的功能。在公司里,你直接用那些已经完成的功能就好,不要自己从头写。所谓的“不要重复制造轮子”就是这个道理。当然,如果是为了学习,造一些轮子也是必须的。

C语言的技能树大概是:C(底层)——C++(桌面应用或底层)——C#(Web,桌面应用, windows phone app)

Java的技能树是:JAVA(桌面应用,Web, 安卓app)需要结合其它知识,比如MVC,SSH,就不展开说了。

5.黑客

程序是人设计的,人一定会犯错,所以程序一定会有漏洞。

最简单的例子,你实现一个可以进行除法运算的计算器,没有考虑除数为0的情况,当用户输入除数为0时,计算器就会报错退出。这就是一个漏洞。当然实际情况比这要复杂得多。

所谓的黑客,其实可以分为“安全人员”和“黑客”。安全人员和黑客掌握的技能有重叠,但前者是为了帮助企业和开发者发现他们的漏洞,提醒他们,帮助他们修复。而后者是利用自己的技能和程序漏洞去窃取资料、搞破坏,为自己谋利。这是两者的本质区别。

(3.22补)评论区指出黑客不只是为自己谋利,确实还存在其它纯粹是为了给被攻击方添堵的行为,比如DDOS,或者纯粹是为了好玩。然而我对这个领域确实不了解,对信息安全领域感兴趣的可以专门查询资料,不要被我误导哈~

信息安全展开说也是一个大课题,我不了解,就不展开说了。

6. DW

我想你指的DW是 DreamWeaver。如果是,那么它只是一个工具。就好像你写C语言要用visual studio或者visual c++ 6.0,写JAVA要用 myeclipse一样,只是一个方便你使用代码向计算机表达自己意图的工具。不过DW更适合做网页,也就是Web站点的前端页面,是你现在用浏览器看到的东西。你用dreamweaver可以做的事情,windows自带的记事本+浏览器一样可以做到,只不过不那么“优雅”,效率不够高。

7.总结

只是把名词解释一遍就挖了好几个坑,扯了这么长的篇幅。还是建议题主先明确一些IT领域的概念。编程不是计算机科学的全部,如果你对计算机算法和数据结构感兴趣,需要数学知识,离散数学、概率论、微积分……足够满足你“难度高”的要求了。如果你是计算机或者软件工程相关的专业,只是想“炫技”,追求“演技”难度高的东西,建议你从C语言学起,掌握了计算机语言的基本思想,熟悉逻辑结构和循环结构,变量,数组,指针,堆栈……

接着,

1.开始学习JAVA,然后转安卓开发或者WEB开发

2.学习Python, PHP之类的脚本语言,转Web开发

相信我,单纯地编程技巧是不能“炫技”的,因为行外人根本不了解软件开发中间的困难,你克服了很多困难但是别人不了解,就像那句著名的“我们有一个绝佳的点子,现在就缺一个程序员”一样,所以不能。可以炫技的地方在于你的创意,你有一个好的创意,做了一个安卓APP,或者你建了一个共享教学资源的网站……归根结底不在于你做的东西有多难,而在于你做的东西能带给其他人多少影响。

最后,样样都了解,每个都不精通,不如只精通一个方向,再横向扩展。

编程,C语言,代码,黑客,软件,JAVA,DW,软件设计等等,怎么循序渐进学习?相关推荐

  1. 单片机STC89C52_C语言代码_来回流水_软件延时

    单片机STC89C52_C语言代码_来回流水_软件延时 //11.0592MHz: //50=3.3ms;80=5.2ms;100=6.5ms;1000=65ms; //5000=325ms;7800 ...

  2. HTML5期末大作业:企业网页设计——摄影店铺5页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:企业网页设计--摄影店铺5页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

  3. HTML5期末大作业:个人网页设计——薛之谦6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:个人网页设计--薛之谦6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个人 ...

  4. HTML5期末大作业:体育网页设计——篮球专题6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:体育网页设计--篮球专题6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

  5. HTML5期末大作业:电影网页设计——在线影院6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:电影网页设计--在线影院6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

  6. HTML5期末大作业:旅游网页设计——山东旅游9页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:旅游网页设计--山东旅游9页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript 常见网页设计作业题材有 个人. 美食. ...

  7. HTML5期末大作业:旅游网页设计——西安旅游9页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:网站--西安旅游9页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业 ...

  8. HTML5期末大作业:游戏网页设计——穿越火线6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:游戏网页设计--穿越火线6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

  9. HTML5期末大作业:汽车网页设计——保时捷6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:汽车网页设计--保时捷6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个人 ...

  10. HTML5期末大作业:蛋糕网页设计——蛋糕甜品6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:蛋糕网页设计--蛋糕甜品6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

最新文章

  1. 调试机械臂一体化控制电路:STM32F103控制器初步调试
  2. 长城电脑或收购夏新电子笔记本业务
  3. jQuery中find()方法和filter()方法的区别
  4. html调试和js脚本调试
  5. ITK:将BinaryMorphologicalClosingFilter应用于给定LabelMap的一个LabelObject
  6. 执行apt-get命令提示没有该命令
  7. python二维数组去重复_php二维数组去重,array_unique出除重复数据
  8. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析
  9. 【渝粤题库】广东开放大学 婚姻家庭法 形成性考核
  10. angular 数字逗号分隔_angular 实现的输入框数字千分位及保留几位小数点功能示例...
  11. 云尚制片管理系统_电影制片厂的未来
  12. 用ubuntu远程连接mysql_Ubuntu 安装 MySQL 和远程连接
  13. java程序经过编译后会产生byte code_Java 虚拟机(JVM)内存模型
  14. 2010年最具潜力微博网站排行榜(转)
  15. 西安python_西安找工作|西安人才网|西安全职招聘信息-西安58同城
  16. ajax请求去获取base64_前端将图片转换为base64位,使用ajax传递到后台,但是图片经过base64转换成字符串后非常长,无法使用ajax...
  17. iOS开发之UIApplication
  18. 卷积神经网络训练准确率突然下降_基于联邦学习和卷积神经网络的入侵检测方法...
  19. PreparedStatement.SetDate
  20. Android M cm主题,M Dark Mode CM12.1 CM13 theme

热门文章

  1. 弘辽科技:拼多多超时发货罚款规则是什么?具体介绍
  2. 腾讯多媒体实验室画质增强技术的前沿应用
  3. 一个骗人的恶劣网站: GPS 定位好友 的传说 ( 其中一个域名是 ipl38.com 诈骗:利用手机号码GPS卫星追踪你的他(她)在什么位置
  4. 【壁纸】kali linux 2021.1 自带原版壁纸分享
  5. 【整理】图片不能直接拖到3dsMAX和Photoshop中了
  6. 启用系统保护是灰色的#win10系统
  7. 未来教育计算机二级2020年9月有几套题,未来教育】2021年9月全国计算机二级office题库国二计算机等级考试上机考试真题计算机二级msoffice2021年考试备考三月教材九2016...
  8. 再谈计算机编程的学习
  9. 微信公众号教程(10)公众账号自定义回复功能
  10. sgfdgfadsg