
很多人想要成为程序员,在学习编程的过程中,面对各种bug和源源不断的问题,有时会对自己是否适合编程这一问题产生困扰。
作为一名教授全栈Web开发的教育工作者,我已经带领很多新手成为了程序员。好消息是,我发现没有任何人是不能学习编程的。我把它看作是一种基本的人类技能,就像阅读、写作和算术一样,任何人都可以做到。它是我们人类能力的一部分,只是需要学习。
在过去的几年的教学中,我目睹了不同的学生在学习过程中的斗争,以及在他们的挣扎中出现的一些共同问题。
下面的列表将帮助你了解你是否喜欢编程
1、缺乏好奇心
如果你对计算机是如何工作的缺乏好奇心,那么,作为一个程序员,你将永远不会成功。
学习的一个基本要求是对你所学的东西有积极的兴趣。如果你没有一个对技术好奇的头脑,你就没有精力去坚持学习要成为一个成功的程序员所需要的广博而深入的知识。相比之下,技术的世界就像一个巨大的海洋,里面充满了各种有趣的领域、相互联系的思想和各种可能,它们可以激发人们的想象力。想要潜入这片海洋并发现你所能发现的一切,需要内在的动力。
找到你的好奇心:问问你自己,编程是否真的让你感兴趣?如果没有兴趣,去找你感兴趣的东西,以节省时间和精力。但是如果你的答案是感兴趣,那么就强迫自己去发现一些你以前没有注意到的新事物,认识到浩瀚的技术海洋,再往下潜一点。
2、缺乏自主性
如果你不培养自己解决问题的能力,你就永远不会成为一个成功的程序员。
毫无疑问,要成为一个成功的开发人员,你必须对自己的学习能力充满信心。这实际上是一项基本的生活技能,如果你年满18岁,没有人有义务教你任何东西。这就是现实。当你想学习技术所需的技能时,首先要学会的是,在谷歌中输入你想要的任何东西并获取你需要的信息。除此之外,所有编程语言都有文档和规范,这些文档和规范对语言的工作方式解释的非常清楚,它们就像字典一样。作为一个程序员,最快速、最可靠的学习方法就是简单地阅读这些文档。
当你有问题的时候,在问别人答案和查阅官方文档之前,强迫自己先搜索一下,节省别人的时间。
3、面对问题缺乏毅力
如果你在遇到问题时轻易放弃,作为一个程序员,你将永远不会成功。
编程的本质是解决问题,这也是计算机产生的全部原因!每当你开始编写一个程序时,你总是会遇到一大堆问题。一旦你解决了一个问题,那么几乎总是有另一个问题在后面等着你。你在进步,但总是会有新的问题要面对。
这堆问题会让人望而生畏,令人感到沮丧。如果你觉得程序应该「能用就好」,那么你就没有精力坚持下去,因为问题还在继续出现,它们会一点一点地击溃你的情绪和决心。从字面上来说,你的工作就是找出程序为什么不能跑起来。
从我在授课上的经验来看,通常每个班都有一两个学生,和其他学生相比,他们似乎更容易遇到更多的问题——通常是非常随机和模糊的问题。我提醒学生,他们面对的问题越多,学习越深入、越彻底的可能性就越大。如果他们能通过这些问题获得深刻的理解,他们会很快发现他们变得更加自信了,因为他们面对和解决的问题比普通学生多。
你需要认识到,问题不仅仅只是问题,它实际上也是挑战。你所面临和克服的每一个挑战都能让你更深入地理解技术,更好地面对新的挑战,并迅速解决旧的挑战。
4、解决问题之后没有成就感
如果你在解决一个问题后没有兴奋感和成就感,作为一个程序员,你将永远不会成功。
与上一个问题相关的是,你成功地解决了一个问题,却缺乏「良好的感觉」。当修复bug和问题变成了一个永远不会结束的事情时,你会失去与克服问题的动力。
当你解决一个问题时,你需要的是多巴胺的释放。这类似于在电子游戏中完成了一个关卡,或者解决了一个像纵横字谜或数独这样的挑战。我们都知道,坚持通过一项挑战,然后最终赢得比赛,一般都会有成就感和兴奋感。但是如果你失去了感受这些快乐的能力,或者从一开始就没有真正有过这些感受,你将无法体验到编程带来的快乐。如果你把编程看作是一种磨砺,你只想尽可能容易地得到结果,那么你永远不会真正成为一个成功的程序员。
无论何时,当你解决了一个一直在努力解决的问题时,无论这个问题多么微小,你总是为你的成就感到骄傲。你需要休息一下,祝贺你自己完成了一项出色的工作,让成功的感觉渗透进你的心里,为你即将面临的下一个问题注入活力。
5、无法独立思考
如果你期望别人为你着想,并且主动看到你自己所在的处境的细节,你将永远不会成为一个真正成功的程序员。
当你在学习新的东西时,很容易感到缺乏知识和经验,并没有自己的观点。主动做事或者说错话似乎是有风险的。对于错误,我们的内心都有一种恐惧感。当对错误的恐惧抑制了你的探索和好奇心时,你会扼杀开发真正知识、从经验中获得的知识和「失败」的能力。当你需要依靠「权威」的观点、一个受欢迎的博客、一个最佳实践或「教科书」的答案时,那么你就没有真正地整合编程的知识。你需要对什么有效,什么无效形成自己的观点。你需要理解为什么你认为你的解决方案有效,以及使用这个方案有什么好处。你需要建立一个微妙的视角,超越那些显而易见的东西。你需要能够「证实」你的立场。
为自己着想。通过你的经验和批判性思维技巧,发展出你自己的思想体系。做出合理的猜测,坚定立场,并愿意随着新信息的出现而改变立场。
6、僵化、狭隘、混乱的思维
如果你的思维僵化,并且难以保持代码的条理化,那么你将永远无法成为一名真正成功的程序员。
我有时在学生中看到两个极端。第一种是僵化和狭隘的思维方式。拥有这种态度的人拒绝帮助,尽管会有反馈,但不会有改变。他们看事情只从一个角度看,别人给的建议被忽略。
我看到的第二个极端是思维混乱。学生们似乎使事情变得更加复杂,他们的代码杂乱无章,难以理解。他们过度思考问题,写100行代码,而其中只有10行是有用的。
当这两种心态结合在一起时,结果就是一种用蛮力的方法去设计程序。我们需要的是回顾解决方案,重新评估它,放弃最初的方法,并重新组织方法。
无法看到其他可能性或无法反思反馈会抑制成长的能力。思维杂乱无章会减慢你的成长速度,阻止你看到那些原本显而易见的模式。你的工作质量也会下降。
自我反省。你需要退后一步,看看你是接触的事物的大局是什么样子的。你要怎样才能做得更好?你能做些什么让你的生活更轻松吗?你需要什么来帮助你?
7、需要「正确」的答案,而不是识别一系列「好」和「坏」的答案的方法
如果你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那么作为一个程序员,你将永远不会真正成功。
当开始学习技能或编程时,学生往往想知道他们所做的是否「正确」,而答案总是「视情况而定」。
计算机科学是一门评估权衡的科学。在不同的环境下,哪条路更好,这完全取决于所处的环境和目标。当你把编程看作是一个有正确答案或错误答案的测试时,你就失去了对全局的认识,放弃了你的创造力。任何答案都可以是「正确的」,前提是你能根据具体情况证明这一点。现实情况是,编程更像是写诗或写短篇小说(如果程序很大,则可能是小说)。在你的代码中可以看到一种美学和美丽,这些东西有时只有你和其他程序员能够识别出来。你决定解决方案的原因,以及你对答案的设想,比「正确的方式」或「错误的方式」更重要。拥有一个艺术家的头脑可以让你编的程序具有选择和可能性,而不是认为只有一种处理方式。这就是编程的美——有很多方法可以解决问题,考虑不同的可能性,然后决定哪种方法最适合当前的情况。
创造性很重要。你要认识到,解决问题的方法有很多种,通过经验和积累,你会对哪些解决方案比其他解决方案感觉更好产生细微的理解。纵观全局,想象不同的可能性,相信你的直觉,你会得到更满意、更好的解决方案
如果你对学习编程感兴趣,我鼓励你开始这段旅程。记住提到的七条,并开始学习、探索在线资源,这些资源可以让你快速学习。你不会后悔的!
合格程序员,对于一种计算机程序设计语言,我们将其分为语法、语义、语用三个层面。仅仅掌握语法是不够的,不算学好。但是很多人,在履历上写自己掌握(甚至精通)了某种语言,其实就是解了语法,会写简单的程序而已。这就是为什么我们行业特别不喜欢“精通”这个词的原因。
现代软件开发,规模都比较大,不是写个HelloWorld那么简单,也不可能每个项目每件事都从头开始造轮子,我们都是站在前辈、同行们的肩膀上工作的。也就是说,语言之外,还有“库”这个东西需要掌握,不然就寸步难行。库有语言级别支持的BuildIn的库,比如JAVA里面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更丰富的还有第三方提供的库,比如JDBC、Servlet、EJB的implementations等等。这些东西掌握了,干活儿才可能得心应手,不然寸步难行。
比Libaray更高层一些的,是Framework。框架的作用在于,将某一方面开发的BestPractices搞到一起,给你提供一个更易用的、不关注底层的脚手架。比如做企业应用的,SpringFramework是标配了;访问数据,Hibernate或者MyBatis也离不开,很少直接用JDBC去干活的了;做WEB的,各种MVCFramework起码得掌握一两个(springmvcorstruts2);做网络的,Netty,MINA怎么也得掌握一个总而言之,框架是绕不过去的一个门槛。
然后呢,就是环境、辅助工具。应用服务器,怎么也得会调试配置那么两个吧。TOMCAT是入门标配,JBOSS,WEBLOGIC之类,起码要弄得跑得起来;针对不同应用场景,还要会选择。开发/管理工具,ECLIPSE是标配、GIT和SVN起码要搞熟一款;其它比如单元测试工具、Build工具、测试覆盖率、CodeReview这些插件也得知道怎么用。
最后,通用的,计算机科学的基础,不说多扎实,至少不能一窍不通。说起来就那几大件, *** 作系统、数据结构&算法、编译原理、体系结构。要懂一点点,你才知道你编的程序是怎么run起来的,哪儿可能存在效率问题性能瓶颈,除了问题知道怎么debug。如果仅仅把计算机当作一个黑盒子,那也不算学好了。
最最后,还有一样,就是你要训练一下,快速理解领域知识的能力。你参与做一个项目,你懂的只是上面这些专业知识,但并不懂客户的行业知识。如何尽快地理解业务,并用你手头的工具实现业务逻辑,这点对程序员而言是非常重要的,否则你做的东西客户总不满意,GET不到重点,很麻烦。
我觉得这是一个合格的程序员的基本要求。你看,我并没要求你懂需求工程、懂项目管理、懂架构设计、懂很多算法、模式,甚至更深的专业知识。
长沙牛耳学生专业对口就业率在935%以上。长沙牛耳是中国最早专业从事IT职业教育的机构之一,也是中国十大品牌IT教育机构,湖南省指定“服务外包人才培训基地”,是湖南乃至整个中南地区最大的软件工程师培训基地。
6-2 03:12
首先,建立3个text和4个command,名称不改了
text1:原始数字
text2:排序后奇数
text3:排序后偶数
command1:产生随机数
command2:排序
command3:清空
command4:结束
其次,在设计状态把所有text的属性multiline修改成true,方便看数字
最后贴上程序代码,你可以拷贝尝试调试一下看看,我这里成功了:)
Option Explicit
Dim X(1 To 60) As Integer, Os() As Integer, Js() As Integer
Dim I As Integer, J As Integer
Dim N As Integer, M As Integer
Dim Temp As Integer
Private Sub Command1_Click()
Text1 = ""
For I = 1 To 60 '产生100到200的随机数
X(I) = Int(Rnd 100) + 100
Text1 = X(I) & "," & Text1
Next I
End Sub
Private Sub Command2_Click()
N = 0
M = 0
For I = 1 To 60 '根据奇偶安排随机数进入各自数组
If X(I) Mod 2 = 0 Then
N = N + 1
ReDim Preserve Os(1 To N)
Os(N) = X(I)
Else
M = M + 1
ReDim Preserve Js(1 To M)
Js(M) = X(I)
End If
Next I
For I = 1 To N - 1 '冒泡排序排偶数
For J = I + 1 To N
If Os(I) < Os(J) Then
Temp = Os(I)
Os(I) = Os(J)
Os(J) = Temp
End If
Next J
Next I
For I = 1 To M - 1 '冒泡排序排奇数
For J = I + 1 To M
If Js(I) > Js(J) Then
Temp = Js(I)
Js(I) = Js(J)
Js(J) = Temp
End If
Next J
Next I
Text2 = ""
Text3 = ""
For I = 1 To M
Text2 = Js(I) & "," & Text2
Next I
For I = 1 To N
Text3 = Os(I) & "," & Text3
Next I
End Sub
Private Sub Command3_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
Private Sub Command4_Click()
End
End Sub
Private Sub Form_Load()
Randomize '随机时钟
End Sub
6-2 13:10
最后祝你顺利哈,偶睡觉鸟,有问题给偶留言啦~
无语了,居然有人这么无耻,抄我的改了我的注释而已,我可是半夜3点多写完的程序,虽然代码仅区区几行,但是请尊重别人的成果!!
tong_ai_ya如果你会请写出自己的东西,没有必要把我的说明和变量定义都抄了过去,大家都知道写程序有很多个人习惯的,一般一看就能看出来,我对你无语,太让人心寒了。。。
楼主你好,你这个问题我晚上来帮你解决,我现在去考试了。
现在问你一个问题,100~200数字中取60个数字可否有重复?我现在写的程序是有重复的,如果你的意思是没有重复数字那么我也晚上来改哦~考试去啦嘻嘻:)
不好意思哈,又是这个点,考完试出去疯了嘿嘿~
根据你的不重复要求我更改了一个算法,大体感觉上应该是优化的,懒得算啦:P
其实我以前和楼主一样,碰到程序问题就很头疼,尤其以前网上搜资料不像现在这么多这么方便。往往一个很简单很基础的问题可以让我做一个通宵,所以我觉得现在休息的时候帮助一下其他人的程序学习很有好处,尤其有这么一个好的平台:)
说实话,楼主初学vb的话,只要能够独立看懂程序就行,然后再尝试自己动手写程序,用vb的一个好处就是F5和F8,自己找碴自己解决还是很有成就感的哦~
我专业和这个完全没有关系,但是还是对编程很有兴趣,如果楼主是编程兴趣爱好者,我们可以相互交流一下,共同进步哈:D
以下是代码,控件没有改动
Option Explicit '强制变量定义,个人习惯而已
Dim X(1 To 60) As Integer, Os() As Integer, Js() As Integer '定义数组,X是随机数字存放的数组;Os是偶数存放的数组,由于随机偶数不确定,因此采用不定长数组形式
Dim Sz(1 To 100) As Integer '这个数组用来存放100~199(上下含)的所有数字,见下述
Dim I As Integer, J As Integer
Dim N As Integer, M As Integer
Dim Temp As Integer, T As Integer '两个临时变量
Dim Si As Boolean '也是一个临时变量,用布朗值描述代表真伪判断
Private Sub Command1_Click()
Text1 = ""
For I = 1 To 100
Sz(I) = I + 99
Next I
For I = 1 To 60 '产生100到200的随机数并且取出数字不重复
Do '常规思路是每生成一个数字,就让它与之前的所有数字进行比较判断是否重复
Si = False '而这里我用了另一种思路,即将所有数字进行标记,以取出的形式获得,形象地说,可以比喻成从篮子里拿苹果:)
T = Int(Rnd 100) + 1 '我想说,编程时同一个目标是可以由不同的过程来完成的,打开思路想咯,我没仔细考虑过两种算法的优劣,懒得去算啦,偶也不是学这个的。。。只是感觉我现在用的方法速度更快~
If Sz(T) <> 0 Then
X(I) = Sz(T)
Sz(T) = 0
Si = True
End If
Loop Until (Si = True)
If ((I - 1) Mod 10 = 0) And (I <> 1) Then '以6行形式输出,每行10个数字
Text1 = Text1 & vbCrLf '这个问题很简单,就是在文本框中加上chr(10)和chr(13),vb中可以用vbCrLf表示,就是回车和换行啦
End If
If (I - 1) Mod 10 = 0 Then
Text1 = Text1 & X(I)
Else
Text1 = Text1 & " " & X(I)
End If
Next I
End Sub
Private Sub Command2_Click()
N = 0
M = 0
For I = 1 To 60 '根据奇偶安排随机数进入各自数组
If X(I) Mod 2 = 0 Then
N = N + 1
ReDim Preserve Os(1 To N)
Os(N) = X(I)
Else
M = M + 1
ReDim Preserve Js(1 To M)
Js(M) = X(I)
End If
Next I
For I = 1 To N - 1 '冒泡排序排偶数
For J = I + 1 To N
If Os(I) < Os(J) Then
Temp = Os(I)
Os(I) = Os(J)
Os(J) = Temp
End If
Next J
Next I
For I = 1 To M - 1 '冒泡排序排奇数
For J = I + 1 To M
If Js(I) > Js(J) Then
Temp = Js(I)
Js(I) = Js(J)
Js(J) = Temp
End If
Next J
Next I
Text2 = ""
Text3 = ""
For I = 1 To M
Text2 = Js(I) & " " & Text2
Next I
For I = 1 To N
Text3 = Os(I) & " " & Text3
Next I
End Sub
Private Sub Command3_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
Private Sub Command4_Click()
End
End Sub
Private Sub Form_Load()
Randomize '随机时钟 如果尝试去掉这一行,你会发现每次随机都是相同的数字:P
End Sub
另外,虚机团上产品团购,超级便宜
以上就是关于特斯拉匹配成功后的程序全部的内容,包括:特斯拉匹配成功后的程序、谁有成功的st7920程序、如何成为一名合格的程序员等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)