-
2017-03-02 15:16:34
给大家推荐一个网站,主要是给在校学生提供资料和交流的平台,也希望社会人士能进来给与一些经验和建议,把这个网站维持下去。
“做人如果没有梦想,跟咸鱼有什么分别?”
我们的梦想就是如何从零基础去学习软件开发,最后达到我们心目中的高度,首先我按自己的理解大致将各个阶段进行划分,每个公司都有自己评定的标准,但大致都差不太多。
学习模式
我将学习分为两种模式
一、项目驱动型
以软件项目开发为导向,先暂时绕过基础知识的学习,起初只求会用,过程中慢慢去补足计算机相关的知识。这种方式在早期对于定力不强,容易退缩的同学是非常有效的学习方式,早早地能进行软件开发无形中会增加成就感,产生驱动力继续去深入学习,这种方式缺点也比较的明显,就是瓶颈出现的时候会比较的明显,不过如果能持之以恒,坚持不懈的学习,瓶颈也会跨过去的。我身边有不少同事,大学的专业跟计算机都没什么关系,毕业后自己转行,也一样能把软件开发做得很好。
二、系统学习型
按部就班,这种比较适合本专业,也建议有恒心的同学采用这种方式。这种方式怎么讲,就跟学功夫,天天扎马步,打桩一样。平时没什么感觉,一旦遇到难题,瓶颈时就能体现出稳扎稳打的优势,时常会因为以前的一个知识点让你灵光一闪。这种方式缺点就是比较枯燥,所以我建议采用这种方式的同学,阶段性的结合方式一去获取一些成就感。比如学习C、C++或者研究算法到一定程度,去写一些简单的单机游戏,或者去参加一些算法竞赛。学习路线
第一种学习模式比较简单,主要是在挑选书籍的时候以项目案例类的书籍为主即可。
第二种学习模式,学业中的数学,物理,高数、现代、图形学、计算机组成原理,微机原理、语言类C、C++、Java等都别落下,这是打基础的阶段,别挑食学得越扎实越好。下面会列举目前公司比较常见的开发语言,框架等需要掌握的一些东西共大家参考学习。- Android学习
- 开启Java之门,学习OOP、泛型、IO操作、多线程、网络、序列化、反射、注解等
- 熟悉数据库,QSLite、MySQL,Oracle
- AndroidUI/四大核心组件,网络通讯,动画等
- 在深入则学习JNI,NDK编程
- 如果往游戏开发走还需要学习Cocos2d-x等框架
- 现在HTML5开始火起来了,有精力的话这个方面也可以学习一下
- IOS学习,IOS开发我没有做过,仅在MAC下做过Qt的开发,这里我只粗略提一下
- OC目前还是IOS主流,这个是一定要掌握的
- Swift已经在慢慢热起来,学习完OC这个还是去学习一下
- PC桌面应用开发
- C、C++、C#等
- Qt 首推Qt框架,跨平台
- WPF Windows下的利器,新项目别去学MFC,早该丢弃的框架,目前只有维护旧项目有用
- 大数据
- linux基础,大数据离不开linux,这个是要优先学习的
- Hadoop
- HDFS
- MapReduce
- ......太多了,如果选择这行,要做好心里准备,都是难啃的茬
通用的一些书籍,如设计模式、架构、性能调优、软件工程、项目管理等参杂于其中,反复的看。希望各位看官留言交流心得。更多相关内容 - Android学习
-
软件开发入门自学指南
2019-03-25 20:16:24每天都看到很多对编程感兴趣的人在问是不是可以自学软件开发,或者应该怎么自学 编程才能入门。在这篇文章里,我将尝试重现一个初学者在学习计算机编程时可能会 碰到的问题,并尽量提供相应的解决思路,希望对初学者...每天都看到很多对编程感兴趣的人在问是不是可以自学软件开发,或者应该怎么自学编程才能入门。在这篇文章里,我将尝试重现一个初学者在学习计算机编程时可能会碰到的问题,并尽量提供相应的解决思路,希望对初学者有所帮助。如果你在看完这篇文章后还是有些疑惑,欢迎扫码加入这个编程学习群 和其他学习者一起交流。
目录
- 编程可以自学吗?
- 学习编程需要什么基础?
- 什么是编程语言?什么是程序?
- 我应该学习哪种编程语言?
- 编程的核心思维是什么?
- 应该按什么步骤学习编程语言?
- 学习编程有什么方法吗?
1、编程可以自学吗?
答案是肯定的,而且自学是学习软件编程极其重要的一个途径。不过最好的方式是自学的同时,有一个可以帮助解决问题的同事或者老师,这样可以避免卡在一个问题上太长时间。
现在有很多途径可以自学,例如IT图书,或者在线视频教程,我们的网站
也提供一些面对初学者的免费的在线互动课程,可以边学习边实践,
你也可以尝试一下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4MNWhWBr-1584533114823)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/hubwiz.png)]
2、学习编程需要什么基础?
简单地说,只要具备正常的思维能力,就可以学习编程。
让我们从一个实际的梗来理解这一点:如何把大象装进冰箱里?
你也许知道这个搞笑问题的搞笑答案:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZfDArOb-1584533114825)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/frig-elephant-solution.png)]
这就是编程所需要的最基本的思维能力:把一个大的问题分解为若干个小的问题,解决了小的问题,大的问题就解决了,这种分而治之的思考方法是一种相当工程化的思维,也是科学技术在过去的两百年里的统治性思维。
回忆一下,你在生活中难道不就是这么做的吗?编程实际上就是把生活中常见的思维活动用编程语言表达出来的一个过程。
3、什么是编程语言?什么是程序?
如果把计算机看成一个人,编程语言就是你和计算机对话的语言,你需要用计算机能听懂的语言才能和计算机对话,就像你需要用当地的语言才能和老外沟通一个道理。
不过由于发明一种新的编程语言的成本相当低,而成就感相当高,因此目前已经出现了太多的编程语言。即有针对娃娃的图形化编程语言,也有中文的编程语言,更有针对不同计算平台的编程语言,试图学习所有的编程语言是不明智的,也是毫无必要的,因为编程最重要的是思维,语言只是向计算机表达你的思维的一个手段而言。
在和计算机沟通时,一次说一句话是比较低效的,因为它会处理的非常快,大量的时间浪费在等待我们的输入上。所以通常是写很多句话一并告诉计算机照着做,这就是我们常说的计算机程序。例如,对于前面说到的把大象放进冰箱这个任务,可以编写如下包含三句话的计算机程序:
openFrigDoor putElephantIntoFrig closeFrigDoor
基本上就是我们的操作步骤的翻译,对吧?
4、我应该学习哪种编程语言?
虽然编程语言不重要,但是初学者选择合适的编程语言却非常重要,因为它会影响你的学习效果和成就感的达成,而且,你终归需要选择一种编程语言才能开始学习编程。
就像大家都喜欢学英语而不是非洲某个国家的法语变种一样,通常你选择一个大家都在用的编程语言是不会有大的问题的,例如看一下权威的TIOBE编程语言排行榜2019年3月的统计:
Mar 2019 Mar 2018 Change Programming Language Ratings Change 1 1 Java 14.880% -0.06% 2 2 C 13.305% +0.55% 3 4 Python 8.262% +2.39% 4 3 C++ 8.126% +1.67% 5 6 Visual Basic .NET 6.429% +2.34% 6 5 C# 3.267% -1.80% 7 8 JavaScript 2.426% -1.49% 8 7 PHP 2.420% -1.59% 9 10 SQL 1.926% -0.76% 10 14 Objective-C 1.681% -0.09% 11 18 MATLAB 1.469% +0.06% 12 16 Assembly language 1.413% -0.29% 13 11 Perl 1.302% -0.93% 14 20 R 1.278% +0.15% 15 9 Ruby 1.202% -1.54% 16 60 Groovy 1.178% +1.04% 17 12 Swift 1.158% -0.99% 18 17 Go 1.016% -0.43% 19 13 Delphi/Object Pascal 1.012% -0.78% 20 15 Visual Basic 0.954% -0.79% 不过贸然地从众选择并不适合所有的情况,每种编程语言都有它特定的优势领域和优势生态,
我尝试根据你学编程的目的以及特定领域从业企业的主流选择给出适合初学者的几种选择,
但更细化地分析远远超出了本文的范围:学习目的 推荐编程语言 推荐理由 只是玩玩 JavaScript 随处可以找到运行环境,容易获得成就感 开发网页应用或网站 JavaScript 只有JavaScript可以支持单一语言前后端全栈开发 开发安卓应用 kotlin、java Kotlin是趋势,Java更通用 开发苹果应用 Swift、Object-C Swift是趋势,初学者不要选Object-C 开发游戏 C#、JavaScript、C/C++ C#是因为Unity的存在,JavaScript更适合网页游戏,C/C++更适合网络端游 开发数据分析或机器学习应用 Python、Julia、R Python是这一领域当之无愧的王者,Julia是值得关注的趋势语言,R在数据分析上有自己的价值 开发企业应用 Java、C# 去偏传统的IT公司工作的最佳语言是Java和C#,工作机会非常多 开发嵌入应用 C、Assembly Language 穿戴设备或IOT软件的运行环境受限,需要这种底层的语言 开发服务端应用 JavaScript、Go JavaScript是因为NodeJS的存在,Go是因为它为网络服务应用开发专门进行了优化 如果你目前还没有明确的学习目的或者倾向性,我推荐两种语言:JavaScript和Python。
这两种语言都有很好的生态,意思是当你需要帮助或者需要使用第三方代码时比较容易获取。如果你有意向数据分析/机器学习/人工智能方向发展,那么选择Python,其他情况,选择JavaScript。无论如何,还是建议你首先考虑自己学习编程的目的是什么,有哪个方向是自己感兴趣并且愿意付出时间和努力的,毕竟,兴趣是最好的老师。
5、编程的核心思维是什么?
在机器学习成为显学之前,传统的编程思维只有一条主线,就是逻辑的表达:把你解决问题的思维,用特定的编程语言表达出来,整理出程序让计算机去执行。这需要你把目标问题分解成一个一个的已经解决的小问题,然后再把这些小问题的解决方案整合成最终的完整解决方案。
理论上只需要三种整合手段就可以实现任何计算任务:顺序、条件判断和跳转:
第一种就是我们解决大象问题时用到的,顺序整合逻辑,依次执行分解后的解决方案就可以得到最终的解决方案。顺序执行是最基本的整合逻辑,它为程序的编写奠定了基础。
第二种关键的整合手段是条件判断,意思是需要根据执行时的实际情况判断是执行方案A还是执行方案B,这个看起来极其简单的判断逻辑事实上是程序展现出千变万化的核心所在。你可以在很多软件里观察到条件判断的存在,例如高铁的烟感探测软件只有在检测到有人在车厢内抽烟时才会报警,而游戏只有在你击杀大BOSS之后才会通关,或者12306检测到你成功识别了它相当有情趣的验证码之后才允许你登录…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8CAFEUBv-1584533114827)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/12306-challenge.png)]
第三种整合手段是跳转,这使得程序可以改变执行的先后流程,从而改变程序的运行效果。实际上条件判断之后执行的就是一种规范化的跳转,例如跳过方案A的片段或者跳过方案B的片段。
循环则是另一种常见的规范化跳转,它可以让我们将一个方案重复执行若干次,而不是在程序中将这个方案复制若干次。例如,当需要我们编写程序实现猴子吃香蕉的任务时,可以看到使用朴素的顺序整合与循环整合的区别:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LG7aPqxT-1584533114828)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/use-loop.png)]
因此,在传统意义上的编程,其核心思维就是目标任务的分解与解决方案的整合,将目标任务
分解细化到你已有的解决方案层面,再使用以上三种手段进行整合。软件2.0
在机器学习兴盛之前,几乎所有的软件都是规则逻辑的表达,开发者需要对任务进行分解,理清每一个细节的解决方案,然后再整合到一起。虽然技术不断地更迭,也不断出现新的开发语言和领域模型,但是这一基本的思路是从来没有变化过的。
不过机器学习尤其是最近十年深度学习的兴起,已经逐渐产生了一种新的软件开发范式,这种新的范式被Tesla的AI主管Andrej Karpathy称为 软件2.0 。如果你学习编程的目的是要进入人工智能领域,希望这部分的内容对你有所帮助。
在传统的编程中,开发者是规则的制定者,这些规则以程序的形式存在,而计算机则仅仅负责执行,也许由于开发者的某个疏忽可能会导致程序的运行出人意料,但整体上来讲开发者是程序的强力操控者,所有的执行逻辑是开发者的思维的展示。
但是在软件2.0中,开发者只是实现一个基准的程序,而大量具体化的处理规则是这个基准程序通过对大量数据的处理而得出的,也就是说,程序执行的规则一部分由开发者设定(被称为模型的超参数),而另一部分规则却是由程序自己通过与数据的磨合优化出来的。
例如,人脸识别已经从早期的手工设计用于识别的特征进化到由深度神经网络自动从大量标注数据中提取特征:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mXu5k5hw-1584533114828)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/cnn.png)]
在软件2.0中的基准程序需要更高层级的抽象,而不局限在一事一议的具体问题解决的逻辑表述上。在目前这一层主要是利用人工神经网络来实现的,程序自主学习的规则体现在神经元的连接权重调整上。因此软件2.0的开发范式,其核心思维就是设计适合问题领域的模型,然后用数据来优化出模型的参数。
软件2.0还处于极其早期的萌芽阶段,但非常值得初学者关注,它的发展也许会最终改变软件开发的模式,虽然我确信在相当长的时间内编程作为一种工作而言都不会消失。
6、应该按什么步骤学习编程语言?
编程是需要熟练的掌握一些基本技能的,因为需要用这些基本技能来组合出来针对特定问题的解决方案。当你还是一张白纸的时候,即使了解了顺序、条件判断或者跳转、循环之类的思维也解决不了具体问题,因为分解到最后还是找不到可用的武器。
编程语言是你的第一个武器,要用好这个武器,就需要尽可能多的了解一个编程语言的能力。可以参考下面的问题探索编程语言的能力:
1、这个编程语言怎么定义变量、函数或者类?
变量是让同一段程序能够适应各种执行环境的必备品,在程序中顺利地使用变量意味着你有了初步的抽象能力。几乎所有的编程语言都支持变量,那么先了解一个编程语言如何定义变量、如何给变量赋初值是理所应当的。
例如,你要编写的程序可能有很多个注册用户,而你的程序核心逻辑并不需要根据用户的不同而区别对待,那么将注册用户抽象成一个变量来编写你的程序逻辑就是合理的选择:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgub40R9-1584533114829)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/variable.png)]
函数(或者过程)是组织可复用代码的一种常用手段。如果有一个功能你会在多个地方使用,那么把这个功能封装到一个函数里是常见的代码复用手段,这样就避免了同样的实现代码在程序的不同地方重复出现,优化了代码,也更容易维护。
如果说函数是对计算机原生的顺序过程化思维的一种优化组合方法,那么类则是面向对象的软件设计思维的优化组合方式,不妨简单地把面向对象视为对现实世界中的实体对象以及相互关系的模拟,例如可以把所有的用户视为一个类,因为在我们的程序中这些用户有一些共同的特性和方法。
2、这个编程语言怎么表达顺序、条件判断、跳转或循环逻辑?
就像前面说到的,这些组合手段用来把程序的各部分拼装在一起,因此是必须掌握的。
3、这个编程语言提供了哪些基准解决方案?
所谓基准解决方案就是可以解决某个单一问题的方案,例如:怎么输出一句话、显示一个图片或者访问服务器上的数据库。通常一个编程语言都会提供一些内置的基准解决方案,以函数或者类的形式提供给开发者,这些函数或者类,就是我们常说的API —— 应用开发接口。
因此在了解了编程语言的基础语法之后,需要学习的就是编程语言提供的API的使用方法。虽然不需要逐个验证每个API的功能,但是强烈建议你设定一些问题,然后带着这些问题找出可以解决这些问题的API进行练习 —— 这些API是你解决具体问题的基础。
4、这个编程语言有哪些优秀的第三方开发包?
大多数的编程语言都采用开发包的形式支持第三方提供扩展解决方案,以便开发者可以根据自己的领域需求进行选择。了解你选择的编程语言有哪些常用的开发包是非常重要的一件事,这可以避免你重新发明轮子,提高学习效率。
例如,同样是学习Python,如果你的目标是要开发Web应用,那么需要了解的就是Flask之类的Web开发包,而如果你的目标是要开发机器学习/深度学习应用,那么需要了解的就是numpy、scikit-learn这些开发包了:
7、学习编程有什么方法吗?
毋庸置疑,和学习其他知识或技能一样,学习编程也需要掌握正确的方法。
1、多实践基准API
第一个学习方法就是多实践,只有思路是远远不够的。过于强调看书看视频而忽略实践的结果就是眼高手低。你看到一个问题,思路上觉得行得通,但是却怎么也实现不出来。这是因为编程需要精确地考虑并实现每一个细节,如果只是粗线条的理解,是很难达到学习目标的。
那么怎么才能多实践?应该多模拟一些实战项目吗?
不是这样的。在早期的学习中,不应该参与复杂的实战项目,而是应该尽可能多的了解编程语言的能力,比如练习它的基础API的使用方法、练习它的扩展包的API的使用方法。一个实践任务一定不要包含太多的代码,最好聚焦于一个API,尽可能地理解它的用法,以及它对应的抽象模型的内在机制。
有的时候一个API用起来很简单,但是它有对应的抽象模型存在,这个模型并不容易一下理解。例如当你学习JavaScript操作网页的时候,就会接触到文档对象模型、Flex盒模型等诸多抽象,在这种情况下,建议你先遵循黑盒法则,就是先了解这个模型的作用,掌握API的使用方法,而暂时忽略其内部运行机制,然后将这个不理解的问题暂且记到小本本上,留待日后解决。
所以,我们说的多实践,不是实战项目的实践,而是在很细粒度上的实践,理想的粒度是在单一API上完成一个实践,因为API本身就体现了编程语言或开发包的设计者的初衷。
2、多问自己为什么
第二个学习方法就是在学习的过程中,多问自己一些为什么,有意识地设计一些问题挑战自己,把一时解决不了的问题记录下来,带着问题继续学习。
第一种问题是在学习过程中自发产生的,比如前面提到的,现在学习的某个知识点可能涉及到了另一个之前不了解的知识点,如果那是一个比较难理解的知识点,那么还是先记录下来,不要打断当前的学习思路。
第二种问题是有意识的发问。例如当你练习一个API的使用时,不妨考虑一下这几个问题:这个API可能在什么场景下能用到?为什么这个API需要这些参数?这个API和之前学的哪些API经常一起用?
能够主动地向自己提出问题是很了不起的进步,这意味着你真正进入了主动思考的状态。
3、设定分级目标,继续实践
在实践API的时候,我们的目标就是理解并掌握这个API的使用方法。当初步熟悉了编程语言的API之后,就可以设定下一级的目标,尝试着用已经掌握的知识去实现这个目标。不需要完成一个大程序,对于大多数情况而言,这时候试着编写一个诸如贪吃蛇这样的小游戏是合适的:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-54u0NUoF-1584533114830)(http://blog.hubwiz.com/2019/03/25/how-to-learn-coding/snake.jfif)]
当然这种阶段性的目标也是与你的最终学习目标相关的,例如,如果你的学习动力是要开发网页应用,那么这个阶段试着实现一个简单的图片分享或者博客系统都是可以的;而如果你的目标是人工智能,那么这个阶段可以试着用神经网络解决一下文本分类的问题。总之阶段性的分级目标的设定是为了给自己一个前进的动力,过高或者过低都不好。
4、在战斗中学习战斗
学习编程的目标是不是学习,而是开发出有价值的程序。因此完全脱产的学习终究会告一段落,你可能会投入到繁忙的编程工作中去。不过这并不意味着你不再需要学习,事实上,技术的演变是极其快速甚至剧烈的,因此别忘了:
保持积极学习的心态和敏锐的好奇心,在战斗中学习战斗!
原文链接:编程入门自学指南 — 汇智网
-
自学考试软件开发工具环境03173真题
2020-06-08 21:12:48自学考试软件开发环境代码03173,内含5套全国历年真题,希望能够帮助自学考试的考生用于学习练习。 -
0基础如何自学软件编程开发
2021-09-05 15:40:390基础如何自学软件编程开发?学习软件编程首先需要选择一门编程语言,如C或JAVA语言,作为基础编程语言学习,掌握语言的逻辑,学习语法,其实编程实质上就是思路的运用,编程思路有了再想学习其他的编程语言就会变得...0基础如何自学软件编程开发?学习软件编程首先需要选择一门编程语言,如C或JAVA语言,作为基础编程语言学习,掌握语言的逻辑,学习语法,其实编程实质上就是思路的运用,编程思路有了再想学习其他的编程语言就会变得顺风顺水。软件编程开发,对于现在的学生来讲到底有多重要呢?现在是互联网快速发展的时期,在几年前谁都没有想到人们在手机上就可以完成衣食住行等所有的活动,互联网也在慢慢的改变着未来一代人。
互联网广泛覆盖了我们的生活,真正实现了“远在天边,近在眼前”, 在我们的生活工作中都有互联网存在的身影,随着IT行业的越来越红火,现如今IT行业已是热门行业,当然,任何一个热门行业大家都会讨论关于行业的发展前景以及薪资待遇。软件编程对于专业人士,并不稀奇,但对于外行人来说,面对着编程语言会有一种神秘感。很多人都有软件编程的梦想,对于外行人员,应该如何学习软件编程呢?
苹果的创始人乔布斯曾经讲过:“每个人都应该学习编程,因为它将教会你如何思考。”思考是人与动物的本质区别,这也就为什么人类能够发明出这么多的工具,改善我们的生活,使得工作和生活的效率变得更高。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
对于初学编程设计的人来说,学习软件编程是一个艰苦而漫长的过程,需要持之以恒的耐心,千万不能急于求成。尤其是对于初学者,最重要的还是打好基础。
部分人倾向于自学,学习这种事情,仁者见仁智者见智,有人能有收获,有人却浪费了时间,学习效果确是收获甚微,学习是一回事,感兴趣是另一回事儿。找对人找到学习的方法节约时间成本又是一回事儿。
逐渐的你会形成自己的编程风格,遇到问题要有自己一套思维方式,解决编程问题。解决问题,代码要简洁,有注释易懂。在学习的进阶阶段需要你学习一些和数学思维有关知识,比如数据结构,算法,矩阵等等,这样你的编程水平会提升一个档次。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
在业余时间可以参加一些编程技能比赛,或者与一群小伙伴们共同学习,多认识一些高手,多和他们交流学习,学习软件编程要下功夫,多多努力,学会自查,减少错误。想要获得成功,最终还是看自己的努力程度,没有谁是可以随随便便成功的。
更多资讯关注【python教程入门学习】回“资料”获取学习礼包。
-
如何入门做软件开发
2020-07-21 16:51:41今天我们来聊下入门做软件开发,也是我经常用来开发程序的主要语言,其实做程序开发之前,你必须得先了解电脑,网络,什么叫硬件,什么叫软件等等。这些东西日常使用已经比较普及了,网上介绍也比较详细,我就不在.../ 今日科技快讯 /
最新一则新闻迅速引起发酵,中国顶级科研机构中科院系统下属机构中科院合肥核能安全技术研究所90位科研人员集体离职,这一场离职,力压疫情、水灾、华为、特朗普,问鼎热搜。
/ 正文 /
今天我们来聊下入门做软件开发,也是我经常用来开发程序的主要语言,其实做程序开发之前,你必须得先了解电脑,网络,什么叫硬件,什么叫软件等等。这些东西日常使用已经比较普及了,网上介绍也比较详细,我就不在赘述这些基础了,直接说软件开发。
电脑或者手机只是一台机器,我们要用这台机器干什么,取决我们自己,电脑中都是二进制代码,但是电脑有鼠标键盘供我们输入信息进行交互,还有显示器来反馈图片视频信息,不管你是来写网页还是做游戏,还是音频视频,归根结底还是数据的计算、流转。
而程序就像是一个个操作工,或者说操作流程,实现数据的流程化运作。例如你输入数字1,显示器显示数字1,这就是一段程序。你调用计算机输入1+1,显示器显示结果2,这也是一段程序。只是他们功能不同,有程序负责存储,有的负责计算。
下面我会用Java语言分享我入门程序开发的心得,以及我个人对程序开发的认知。
▊ 如何写第一个Java程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
这是所有Java程序员入门时都写过的代码,放到JDK中运行(这里的JDK是什么不用关心,你可以理解为环境,这也是写Java代码之前必装的软件,没有JDK就执行不了Java程序,网上对java安装的教程有很多,无非就是下载安装,这里就默认装软件都没问题)
那么就有以下几个问题
1.我用什么写
老实说,你可以用记事本写,就是新建一个txt文档,使用ctrl+c,和ctrl+v 复制粘贴代码就行,然后改一下文件后缀,例:HelloWorld.java
当然,熟悉的人一般会用编辑器开发,例如IDEA或者Eclipse,这比文本写代码要方便、快捷、效率得多,当然,他们的本质都是敲写代码
2.我放在哪
放哪都行,放桌面或者放文件夹都可以,不过我建议最好一开始就养好习惯,专门的东西放到专门的地方,建好文件夹,要知道一个良好的习惯可能会在将来给你收获的东西会越来愈多,写代码只是软件行业中很小的一部分,决定你高度的,最重要的还是思维和习惯,这个就不展开讲了。
3.我怎么运行
在你存储文件的地方打开命令行(shift+鼠标右键,选择在此处打开Powershell窗口,后者使用快捷键win+R,但要配合文件地址),
java执行程序有两步,
第一步是编译,命令行输入javac HelloWorld.java生成.class文件,这里的class文件是jdk会执行的文件,日后我们部署也是用class,class是一个字节码文件,现在记住这些名词就行。
第二步执行,命令行输入java HelloWorld.java,然后你就会在窗口看到Hello World的输出。
很简单对吧,其实就是很简单的,你要干嘛,把程序写好,交给他执行就可以了,现在的编程语言都是高级语言,相比以前那些晦涩难懂的语言已经进步太多了。
你可能不要只写这么一个Hello World,但是你能写出来这个程序,就已经算是开始入门软件开发了。很多很复杂的东西就是这么一个个简单的东西拼凑起来的,不要急,后面要学的东西还很多,学不完的你放心。
▊ Java是什么
这里我引用知乎上的一段内容,图文并茂,别有一番趣味
在说清楚“什么是Java”之前,我觉得我们可以先来认识“什么是计算机语言”。
计算机语言指用于人与计算机之间通讯的语言,用一套编写计算机程序的数字、字符和语法规划来组成各种指令,通过指令达到人与计算机的“沟通”。
如今通用的编程语言有两种形式:汇编语言和高级语言。
高级语言将许多相关的机器指令合成为单条指令,由于省略了很多细节,编程者也就不需要有太多繁杂的专业知识。
所以高级语言是绝大多数编程者的选择。
各个编程语言之间有什么区别?
一位外国友人用《如果编程语言是武器》对各个编程的区别和特征做了生动形象的描述。
C语言是M1式加兰德步枪,很老但可靠。
(开发效率太低,开发门槛高,不要以为语法简单就门槛低,指针、内存、操作系统底层才是门槛所在)
C++是双截棍,挥舞起来很强悍,很吸引人,但需要你多年的磨练来掌握,很多人希望改用别的武器。
(太复杂,如果现在的程序员全部被强制去写C++,估计90%会崩溃或者转行)
Ruby 是一把外嵌红宝石的宝刀,人们使用它通常是因为看起来很炫。
(拥有广泛的工具及功能库,使得构建应用十分轻松,但很难找到关于Ruby良好的说明文档且运行速度差。)
PHP是水管子,你通常会把它的一段接到汽车的排气管,另一端插进车窗里,然后你坐进车里,开动引擎。
(拥有庞大而活跃的社区,面对Web开发难题都有现成的解决方案,但PHP错误处理机制比较糟糕,因为它的开发历史过长且需要支持大量旧有功能。)
Python是一种“v2/v3”双管枪,每次只能用一个管子发射,你永远不知道该用哪个管子发射好。
(因为该语言易于掌握拥有极高人气,但在语言设计上存在问题,在移动计算领域表现比较糟糕。)
JavaScript是一把宝剑,但没有剑柄。
(它的代码函数可立即运行,无需等待服务器做出回应,因此速度非常出色。但由于代码在用户计算机上执行,有时会被恶意活动所利用。)
Java是M240通用弹夹式自动机枪。
(同样的效果,Java用简练的语言即可进行输出,封装了大部分的算法,用自带的库/开发环境运算,所以运行速度能像机枪一样快~)
Scala是M240通用机枪的变种,但它的使用手册是用一种看不懂的方言写的,很多人怀疑那只是一些梦话。
不难看出以上威力最大的武器就是Java了。的确,相对而言Java是开发效率、开发门槛、性能、跨平台这几方面平衡得最好的语言
了解以上内容之后,就可以开始解释
什么是Java?
Java,由Sun Microsystems公司于1995年5月推出,它是一种可以编写跨平台应用软件、完全面向对象的程序设计语言。
不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Java是怎么来的?
20世纪末,硬件领域出现了单片式计算机系统,这种系统价格低廉,立即引起了研究人员的注意,由于C++程序过于复杂和庞大,研究人员开发了一种称为Oak的面向对象语言。这是Java的雏形。
1995年,业界为了使单调的静态网页能够“灵活”起来,急需开发一种程序。这时,Sun公司想起了那个被搁置很久的Oak,并将Oak更名为Java,它语言精简,程序非常小,适合在网络上传输。
1995年5月,Sun公司正式发布Java。从此Java一路披荆斩棘,在经历20多年的发展之后依然长盛不衰,常年雄踞各大编程语言排行榜第一位,这也凸显了其在IT技术领域的绝对统治力。
/ 总结 /
本文主要分享了所有程序员都会写的helloworld程序,其实编程语言什么的都是其次的,最重要的是具有软件开发思维和习惯,因为软件开发面对的是机器,一定要确认清楚规则和边界,加之设计出没有漏洞的逻辑,有朝一日,你也会成为程序员大牛。
往期推荐:
欢迎关注我的公众号
学习技术或投稿
长按上图,识别图中二维码即可关注
-
软件开发工具pb自学指导.pdf
2021-10-01 11:13:34软件开发工具pb自学指导.pdf -
软件开发工具pb自学指导定义.pdf
2021-11-02 11:59:11软件开发工具pb自学指导定义.pdf -
全国2012年10月高等教育自学摸底测验软件开发工具试题.do编程资料c
2022-04-15 02:24:20全国2012年10月高等教育自学摸底测验软件开发工具试题.doc -
自学考试软件开发发工具试题(卷)真题和答案解析.doc
2021-09-29 21:50:52自学考试软件开发发工具试题(卷)真题和答案解析.doc -
自学考试软件开发工具历年考试真题答案
2011-10-08 17:33:222001-2010年间的自学考试软件开发工具考试相关试题答案。 -
软件开发自学靠谱吗?
2021-03-26 13:45:14首先,做任何事情,都是可以自学的。...但是软件开发,在我们所接触到的技术中,学习周期长,学习难度大,一个本科或大专的学生,即便是计算机相关专业的,也要全面的系统的学习半年左右。你下载点视频,买 -
学习软件开发千万不要犯的错误
2021-03-23 14:36:19最终我是学会了开发自己的原型,但道路很崎岖。如果你也跟我一样走在自学的道路上,我希望你能避免我犯过的错误。 错误#1:我花了大量的时间去学习我实际上并不需要的东西。 我不知道如何开始。有这么多可以... -
pb开发自学
2017-12-13 16:43:03扼要地介绍本课程在软件课程中的作用和信息系统 的开发模式 PowerBuilder 的主要特性,然后阐述集成开发环境的组成、各画 板的功能、作用、定制开发环境的方法、对象的基本概念等,并在章尾介绍本课 程的教学内容... -
大学如何自学嵌入式开发?
2021-11-01 19:43:44我2011年就开始从事嵌入式软件开发。 很多人觉得学习嵌入式开发比高考还难,不知道怎么入门?要学哪些东西? 嵌入式开发涉及的知识,你确实一辈子都学不完。 但是,这不代表你需要花费很长的时间才能学会。 我... -
如何自学软件开发
2013-03-13 00:19:17我对软件编程很感兴趣,想自学软件工程开发,请问大牛们作为一个自学者应该注意些什么问题,或者是应该何如自学?还有就是离散数学对以后的软件开发有用吗? -
自学软考软件设计师教程
2021-01-30 17:57:03软考软考设计师教程共44G -
自学考试软件开发工具
2009-04-03 14:49:01噶等教育自学考试计算机信息管理专业软件开发工具正题及答案 -
自学java软件开发工程师课程学习顺序
2013-11-23 16:28:46具有7年开的经验的工程师,描述自学java软件开发,需要学习的知识和学习顺序,推荐看的书籍等,顺利帮助初学java者找到方向。 -
深入浅出Android软件开发教程.pdf+源码
2017-11-20 17:18:01本书是面向Android初学者的教程,介绍设计开发Android应用程序的基础理论和实践方法,讲解Android系统...本书可作为普通高等院校及各类培训学校Android软件开发课程的教材,也可作为Android程序设计爱好者的自学用书。 -
【自学Android开发(一)】
2022-01-02 21:06:51从零开始自学app设计第一天安卓app开发流程Android开发工具 安卓app开发流程 完整项目最精简流程:Android(客户端)调用网络接口,来获取数据库里面的数据;数据库收到请求后将数据库的数据返回给网络接口,通过... -
汽车电子技术——ECU/MCU嵌入式软件开发
2021-08-02 01:03:57汽车电子技术——ECU/MCU软件开发1. ECU/MCU软件开发知识储备1.1 ECU/MCU相关基础知识1.2 C语言编程知识1.3 外围电路2 MCU开发板实践学习2.1 STM32F103开发板2.2 MDK5软件集成开发2.3 简单应用示例——流水灯 ECU... -
全国高等教育自学考试 软件开发工具试题合集【2000-2008】
2009-03-20 22:37:49全国高等教育自学考试 软件开发工具试题合集【2000-2008】 -
软件工程师入门:Java项目开发实例自学手册
2013-05-12 21:24:51软件工程师入门:Java项目开发实例自学手册—(人民邮电出版社)—(来源于网络,仅用于学习和交流)——java项目开发实例自学手册(源码):http://download.csdn.net/detail/comer123/5363449 -
零基础如何自学 Android 开发?
2020-09-02 16:11:00小伙伴你好,欢迎看本篇文章。之前有粉丝私信说要我写...内核采用的是linux内核2.6,android sdk提供了在android平台上使用java语言进行开发Android应用程序开发的工具和API接口。 实际就是使用java语言和android api -
自学考试-“软件开发工具”
2016-01-10 21:09:19一张图。 -
自学软件测试需要多久?能掌握吗?
2021-12-03 17:52:20自学软件测试需要多久?如果参加培训班学软件测试需要5-6个月,自学软件测试时间长短因人而异,与学习资料及个人的毅力有关,排除资料问题假设能够弄到靠谱的资料然后开始自学,按照制定好的学习计划走至少需要5个月... -
2021年自考软件开发发工具试题真题与答案.doc
2020-11-14 22:37:10全国 1月高等教育自学考试 软件开发发工具试题 课程代码03173 一单项选择题(本大题共20小题每小题1分共20分) 在每小题列出四个备选项中只有一个是符合题目要求请将其代码填写在题后括号内错选多选或未选均无分 1非... -
小白如何自学后端开发
2021-06-17 18:13:09小白如何自学后端开发 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效); 编程思想就是编程思路,有很多同学问我:老师,我现在听课能听懂,但是你让我解决一个实际的问题,我不会,不知道该怎么下手!!!... -
自学软件测试需要学到哪些内容?
2022-04-01 18:02:47刚开始学习软件测试的学生应该经历一个从学习到进入到熟练的过程,掌握软件测试的基本知识,学习软件测试的思维,将理论知识应用到实践中,真正理解软件测试的理论知识。作为一名软件测试工程师,我们应该了解软件... -
JAVA自学教程
2019-04-18 22:15:28一本非常好和非常全面的JAVA自学教程,适合新手和0基础的同学们