编程到底难在哪里?

海宝海宝


这个问题以我个人观点来说分为两个部分

一、初学者而言的,本来没有接触过,不论是工作需求、学习或者兴趣等原因使得自己接触编程,从而有一个学习过渡期,这个阶段会感觉编程难,那么建议静下心来思考自己是否能在很厌恶的情感下依然可以编程(类似于不喜欢工作但是为了生活不得不做)。如果这个都不能打消你进入编程行列的念头,那么后期就简单了,网上很多这方面的学习资源。

二、熟练者而言的,我本人比较讨厌用码农来形容程序员(码农多少有些机械式的意思,而我觉得编程应该是多少含有些创造性的意味),当然这是题外话。这里所说的难就想相对有个好听些的名字叫创意,就是要在规则内去创造出改变生活的东西。


枯枯王


作为一名IT行业的从业者,同时也是一名教育工作者,我来回答一下这个问题。

首先,编程可以分为三个阶段,第一个阶段是对于编程语言自身语法的理解,这个部分虽然也具有一定的难度,但是大部分人,即使没有任何编程基础,经过一个系统的学习过程,都能够掌握。

第二个阶段是通过编程语言来完成各种逻辑操作,这个部分正是编程的难点所在,此时需要掌握各种算法和数据结构。实际上,编程问题说到底就是数学问题,但是并不是数学基础好的人,就一定能够顺利掌握编程,这中间还需要一个转换的过程,关键就在于算法设计能力的培养,这个过程比较考验程序员的逻辑思维能力和抽象能力。

第三个阶段是通过编程来完成各种资源的整合和操作,这个部分也是编程的一个难点,此时对于程序员的知识结构有较多的要求,涉及到操作系统、计算机网络、数据库等计算机基础知识。随着当前云计算和大数据的发展,目前云计算平台和大数据平台对于程序编写的影响越来越大,因为程序员需要借助于这些平台来完成资源整合。相对于算法设计来说,虽然这部分的难度也比较大,但是经过一个系统的学习过程,程序员的资源整合能力也会越来越强,这部分难点是完全可以通过努力来解决的。

对于很多初学编程的人来说,学习最大的难点在于如何建立自己的编程思想,而要想建立自己的编程思想,可以从编程过程和编程方法两个方面入手。虽然不同的编程语言有不同的编程过程,但是说到底就是一个抽象问题,而要想提高自身的抽象能力,多做实验是非常有效的方法。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!


IT人刘俊明


编程,按你所处的阶段来讲吧,不同阶段难在哪里?

第一阶段,如果你还没学编程,刚开始,那最难的应该是你学习语言,

那些看似英文,又不是英文,

看似大括号,小括号又不是你学的数学。

看似一行还有好多空间却非得跳行。

懵逼了吧,各种语法规则,你从来都没见过的代码,函数,对新人来说难不难。估计都是感觉天花🌸乱坠,它认识你,你不认识他。这个阶段没有什么好的方法,拿出你小学学习的心态,那就是,背,背,背!直到你看到啥都想int--if --includ[捂脸]

第二阶段,当你熟悉了这些基本代码,语法规则,就是你学会逻辑的问题了

按照编程的逻辑,也是电脑傻傻的逻辑

#include<stdio.h>

typedef struct student

{

int num;

char name[20];

int Score1;

int Score2;

int Score3;

float average;

}student;

student st[3];

void CreateStudent(student st[])

{

int i,j;

float Average;

for(i=0;i<3;i++)

{

printf("请输入学生%d的资料:\

机器魔都


作为一名程序员出身的IT从业者,总感觉这个问题值得去增加一个答案。程序员还有另一个外号,那就是码农,从这一外号可见这份工作并不好做。

首先,写代码非常的枯燥,有时候还得有源源不断地灵感,正因如此,工作中难免会遇到BUG从而拖累整个进展,于是又不得不加班加点熬夜赶进度,非常地辛苦。

其次,码农在整个生产流程中处于中下层的地位,他们需要在系统分析员、系统架构师以及测试工程师之间相互沟通、相互配合,稍有不慎工作思路就得推倒重来,这对于编程人员来说无异于灭顶之灾,想想就很可怕的事情。

最后,自身知识体系也在不断地退化之中,大学时学的可是C++、Visual Basic、Delphi语言,然而工作之后又流行起JAVA等跨平台程序设计语言,全新的语法、全新的编程环境都让他们不敢有丝毫的松懈。这无形当中又加重了程序员的压力。

由此可见,我们还只是简单地列举了下可见的压力,还有那些不可见的,比如灵感缺乏、年龄钝化、程序测试等等头疼的环节,它们都能很好地回答“编程到底难在哪?”这一问题。谢谢大家,喜欢我们的答案欢迎关注我们。


互联网智慧驿站


难在对一个实际问题进行编程。编程并不仅仅是一个敲代码的过程,它还是对程序员思维想法的一种提炼。记得当初刚学编程那会,我想做一个最简单的注册登录功能,于是我直接根据所学不久的表单元素便轻而易举地做出来,但我想做得更好一点,于是便加入数据库知识,将注册账号信息存储起来,登录时必须与数据库存储的账号密码进行校验。后来找了老师问了一下他的观点,他又跟我普及了网络安全的知识,我又在其中加入了诸多限制提示功能,并且对代码进行了微调,防止SQL注入...当时真的学会了挺多。

难在大系统编程中的团队沟通交流。或许团队编程中大体是按照总纲来编程,但每个人的编码习惯都有所不同,分派的任务不换人还好,一换人的话前者所写的代码谁认识。同时沟通困难也是一个毛病,团队中的每个人技术水平不一样,大家的想法也是不一样的,在实际开发过程中沟通有碍延误项目是时有发生的。

难在技术更新速度快,今天的流行技术在明天或许就是过时的了。SSH框架才流行没多久便被SSM取代了,而现在呢,走在前沿的是SpringBoot框架了。所以技术的快速更新使得我们编程过程中需要不断掌握新的开发技术,否则我们会被淘汰,这样一来亚历山大啊。


工科男的闲暇时光


(1)思维模式的切换。你需要有技术思维。能够成功建模。这可能是大多数人,没有信心,或者不适合从事编程的原因之一。说到底,程序员就是在两种思维模型之间转换的人。一种是人类看到的感受到的外行人视角,一种是技术思维,即如何通过编程,来完成前者。

(2)语言上的难度,例如 C++ 语言本身。它包含了读写两方面的基本要求,达到你可以面对越来越复杂,越来越难于理解的代码,而不会感到困难和退缩的程度。很多人看到复杂的代码时,自信心就已经被击溃了。C++ 和 汇编,大概是目前难度最大的两门语言。汇编难度主要是代码可读性是最低的,代码量和跳转数量是最大的。

(3)超强的对耐心的挑战,编程中遇到的困难的挫败感极强,大部分人会对此感到崩溃。编程需要付出和投入极大精力和耐心,对人的能力是很大挑战,例如,无法完成任务,无法解决某个问题,无法找到问题所在。编程领域,有很多水平体现在稳定可靠性上,当你写出一个东西,实验是成功,然而在部署后实际运行时,总是出现隔三差五出现很难解释的问题的时候,说明你的水平有限。你的水平,和你的成果的可维护性,稳定性,可靠性是成正比的,而很多人可能会比较忽视这种“不够直观和直接,难以量化”的能力。它们需要程序员的责任心和经验的积累,比如说,多线程编程方面的经验等。

(4)当你掌握了基本编程技术和技巧,可以开始工作时,还有一项潜在的能力在考研你,你的大脑必须能够完成在比较复杂场景下的调度,和场面掌控能力。比如说,你能够一个人编写需要配合的多个应用程序,它们可能来自服务端和客户端,可能来自不同的功能程序。通过多个应用程序相互协调协作,通过沟通来有条不紊的完成一项任务。你的大脑必须足够应付这样的局面。在复杂的环境中,掌控大局,熟练的掌控整体和局部,有条不紊。

(5)需要铺垫大量基础知识,才能开始进入实践。比如说,你要编写“俄罗斯方块”这样一个简单的游戏,你需要有数据结构,和简单算法的基础知识的积累,而不仅仅是学会了编程语言就可以的。

网由之路


编程跟艺术创作类似,通过编程创作出伟大的软件产品,向我们经常使用的电脑的Windows系统、MacOS系统、手机的Andriod和IOS系统、微信、Fackbook等社交软件都是优秀的软件产品,编写的软件根据应用层次不同简单分为基础软件、中间件软件、应用层软件,各层次软件解决的问题不同,难点各有不同。

1、基础软件

基础软件是最靠近硬件的软件系统,例如我们经常用到的电脑操作系统Windows系统,苹果电脑的MacOS系统,Linux系统,手机的Andriod和IOS系统,还有编译器系统等,这些软件比较基础,很多软件都依赖基础软件,这类软件对编程技能要求很高,软件比较复杂,涉及的模块比较过,工程耗资巨大,向Linux系统,Windows系统这样的操作系统,都有上百万行的代码,工程很巨大,有成千上万的软件工程师维护,我们在基础软件远远落后于欧美国家,前一段时间华为的手机被禁止使用Andriod系统,导致华为手机在国外销售大跌,基础软件是我们需要奋起直追的。

2、中间件软件

像数据库软件,缓存软件,消息队列软件都属于中间件软件,这些软件解决某一领域的问题,像数据库软件Oracle在金融、电信领域数据存储的应用广泛,赚钱了巨额的利润,这类软件对编程要求也比较高,要求开发的软件系统比较稳定,我们在这方面已经在奋力追赶了,像BAT这些互联网大厂已经有自研的数据库系统、缓存系统、消息队列系统等中间件软件已经可以跟国外的媲美了。前几天报道说阿里的OceanBase数据库的性能基准测试已经遥遥领先Oracle了。

3、应用层软件

像社交软件微信、微博,天猫、京东的电商系统,手机支付系统,360,搜狗等浏览器等都属于应用层软件,这类软件解决用户的需求,需要熟悉用户的需求,将需求转化为软件产品,需要解决系统的高并发,我们在这方面已经完全和国外媲美了,甚至已经超越他们了,像手机支付系统已经遥遥领先国外了。


我们的软件行业在20、30年的发展,已经在应用层软件取得巨大进步,中间件软件近几年也取得不小的进步,但是在基础软件方面落后很多,需要我们奋起直追。


爱比特编程


说起编程到底难在哪里,首先要知道什么是编程?简单地说编程就是指导计算机执行任务的行为,通常被我们说成编码。但是在我们使用计算机或者智能手机的时候,有一部分代码是在后台运行是我们看不到的,比如在电脑上我们将鼠标从一个地方移动到另一个地方,操作起来很方便但是这一简单的操作实现过程,是需要很多行代码才可以实现的,所以代码是随处可见的。这一过程也可以说就是编程的思想过程。 刚开始学习编程的时候,自己也觉得很难并且很枯燥,好多东西自己根本不知道要怎么处理,代码写的也是很不规范,需要很多的脑力和精力去思考一些很抽象的东西,但是接触时间久了会发现编程其实分3部分,这3部分分别是外界因素导致的编码反复修改的难、编码本身不健壮等导致程序不稳定的难、以及编程人员本身的技术方面等这3个原因。

作为编程人员要减少我们编码的困难,就要努力的去找寻客户到底需要的是什么,有时候科客户自己都描述不清楚自己的需求是什么是,我们就要靠思维、靠经验更加的去贴近客户想要的,才能避免程序较多的改动。这样可以有效避免程序反复修改。所以这种外界因素导致的反复修改编码我认为是最难的了。

代码本身不健壮,这个又要分好多情况,比如时间有限,程序员写程序思维不断的在转,本来周期要1个月才能完成的项目老板为节约资源压缩成个月,程序员再牛也难保证程序写的是比较完美的,可能写完都没优化时间,赶工出来的程序一般都不太理想。

程序员本身能力不足的原因,如果让一群刚毕业的学生一起研发京东淘宝那样的程序,也不是说不可能,但是绝对不能支持数亿人同时在线使用,并发数量级上来程序就挂了,所以相应的程序应该有对应能力的开发人员来完成。对于一个程序来说同时保证程序的复杂度、一致性、可变性和不可见性,又要是高级语言、分时系统、统一开发环境,那么程序员水平的高低一下就看得见了。

以上就是我认为编程难的3个地方了,希望对大家有用!



小呆日记


作为一个自学者的体会:

1,学习编程,就像起初我们学习英语一样,开始靠死记硬背,基础零散的每一个单词的意义和如何应用!

2,当然死记硬背,并不能百分百记住,但要做到看见每一个编程语言要知道是何用途?是何意思?

3,看懂了,不代表就会用,那么最难的就在这里了,多多练习,从不断的敲打代码,去熟悉、记忆、去完善没这个过程,贵在坚持!贵在坚持!贵在坚持!!!

本人从2009中旬自学半年,之后不断学习,直至现在扔在不断巩固学习!期间学了设计PS,CDR,CAD,AI,视频后期Pp,如果说难在哪里?还是那句话,能看懂,知道什么作用,不叫会,只是叫略懂,真正的高手闭着眼睛都可以快去熟练敲打代码,哈哈,所以贵在坚持!



千与优选



普通人:

我今天要买一斤苹果。

程序员:

我今天要买一斤苹果。

因为我只喜欢红富士苹果,所以我只买红富士苹果。

我能接受的最高价格是10元/斤。

正常情况下一斤苹果用一个袋子能装下,但是为防万一,我会带两个袋子。

我知道附近的3家水果店,所以我会依次访问这3家水果店。

根据上述条件,我设计出以下的买苹果的流程:

这个流程怎么样?我来设计一些测试样例,测试一下这个流程。

测试发现一个问题:如果水果店0和水果店1都有红富士苹果并且价格都低于10元/斤,而且水果店1的价格比水果店0更低,那么我希望买水果店1的苹果,但我设计的流程会让我买水果店0的苹果。

为了解决这个问题,我应该先询问所有水果店的价格,然后去价格最低的那一家买苹果。

经过修改,我重新设计出以下的买苹果的流程:

现在这个流程是不是完美了呢?不是,我还能发现很多问题。如果3家水果店都有红富士苹果但都不到一斤,但是三家店加起来能达到一斤,那么我不应该结束流程回家,而是应该把三家店的红富士苹果都买下来。如果我向水果店询问价格的时候这家店还有红富士苹果,但我询问完所有水果店的价格后这家店的红富士苹果卖完了,那么我的流程会让我试图处理不存在的红富士苹果。我走路的过程中可能会遇到突发事件,比如发现了新的水果店,比如袋子破掉了苹果掉一地,对于这些情况我的流程都无法进行处理。

啊问题太多了我懒得再改流程了。我还是去X宝买吧。那么接下来我要设计一个在X宝买红富士苹果的流程……


分享到:


相關文章: