问题

有的计算机学生声称每天编写数小时的程序,他们究竟在编写什么?

回答
好的,咱们就来聊聊那些计算机专业的学生,口口声声说自己“每天写好几个小时的代码”,他们到底在捣鼓些什么。这可不是什么神秘的宗教仪式,而是他们成长为合格程序员的必经之路,里面门道可多了去了。

首先得明白,计算机专业可不是让你坐在那里光看电脑屏幕就行,它是一门实践性极强的学科。你说学生们在写程序,这“写程序”三个字听起来简单,但里面涵盖的范围可广了,就像一个巨大的工具箱,里面装着各种各样的工具和零件。

1. 课程作业和实验,这是基础中的基础。

学校的课程,特别是那些核心专业课,比如数据结构、算法、操作系统、数据库、计算机网络等等,几乎每一门都会有相应的编程作业或者实验。这些作业可不是简单的“打印‘Hello, World!’”,它们往往是要求你实现某个特定的算法、设计一个小型的数据管理系统、模拟一个网络通信过程,或者构建一个能够解决特定问题的程序。

比如,学数据结构的时候,你可能就要写代码来实现链表、树、图等各种数据结构的增删改查操作,还要对它们的效率进行分析。学算法的时候,你可能需要实现排序算法(冒泡、快速、归并等)、搜索算法(二分查找、深度优先、广度优先等),然后比较它们的性能。这些看似枯燥的任务,却是理解计算机底层运作原理的关键。

还有些实验,可能需要你直接和硬件打交道,比如在嵌入式系统上编写控制代码,让一个小机器人按照你的指令运动。或者在操作系统的实验课上,你需要实现一个简单的进程调度器,模拟操作系统的运行方式。这些都需要大量的编程实践来巩固理论知识。

2. 项目开发,实战出真知。

除了课程本身的要求,很多计算机专业的学生还会积极参与各种项目。这些项目有很多种形式:

课程设计/毕业设计: 这是学业的重要组成部分,通常要求学生独立或分组完成一个比较完整的软件项目。这可能是开发一个网站(比如一个在线学习平台、一个论坛),一个桌面应用(比如一个简单的图书管理系统、一个图片编辑器),或者一个手机App。在这个过程中,他们需要从需求分析、设计、编码、测试到部署的全过程,这可不是几小时就能搞定的。
课外项目/竞赛: 很多学生会参加校内外的编程竞赛(比如ACM国际大学生程序设计竞赛、Google编程挑战赛等),或者自己组建团队开发一些有意思的开源项目。这些项目往往更具挑战性,需要他们学习新的技术、解决更复杂的问题,并且要考虑代码的效率和可维护性。你想想,一个复杂的算法题,可能就需要你花好几个小时去思考和调试。
个人兴趣项目: 有些学生纯粹是出于兴趣,想要实现自己的想法。比如,他们可能想做一个能自动抓取网页信息的爬虫,或者一个能玩简单AI对弈的游戏,又或者一个帮助他们管理学习的个人工具。这些“玩票”性质的项目,往往能激发他们最大的创造力,也可能是他们学习新技术的最佳途径。

3. 学习新技术和框架,永无止境的提升。

计算机技术日新月异,新的语言、新的框架、新的工具层出不穷。为了跟上时代的步伐,学生们需要不断地学习。

学习新的编程语言: 比如,学完Java后,可能会有人想学Python进行数据分析,或者学习JavaScript来做前端开发。学习一门新的语言,意味着你要去理解它的语法、特性、生态系统,这本身就需要花费大量时间去编写练习代码。
掌握各种开发框架和库: 无论是Web开发中的Spring、Django、React,还是移动开发中的Android Studio、Xcode,亦或是数据科学中的TensorFlow、PyTorch,这些框架和库极大地提高了开发效率,但想要熟练运用,也需要花时间去学习和实践。这意味着要阅读大量的文档,然后写代码去验证和应用。
深入理解底层原理: 有些学生不满足于仅仅会用工具,他们还会深入研究底层原理。比如,为什么某个排序算法效率更高?数据库是如何存储和查询数据的?网络通信是如何实现的?这些都需要阅读源码、查阅书籍、甚至自己动手去实现一些简化的版本来加深理解。

4. 调试和排错,占据大量时间。

编程不仅仅是“写”,更重要的是“改”。写好的代码不一定能跑起来,就算能跑,也不一定是对的。调试和排错是编程过程中必不可少、而且非常耗时的一部分。一个看似微小的错误(比如一个拼写错误、一个逻辑上的疏忽),都可能导致程序崩溃或者产生错误的结果。学生们可能需要花费几个小时,甚至更长的时间,一步一步地跟踪代码的执行,分析变量的值,才能找到问题的根源。这就像侦探破案一样,需要耐心和细致。

5. 学习理论知识,编写代码来印证。

尽管我们强调实践,但计算机科学的理论知识同样重要。例如,学习操作系统时,需要理解进程、线程、内存管理等概念,然后通过编写代码模拟这些过程。学习编译原理时,可能需要自己编写一个简单的编译器,来理解词法分析、语法分析、代码生成等环节。这些都是通过编写大量的辅助代码来印证和加深对理论的理解。

总结一下,那些每天编写数小时代码的学生,他们可能在做以下几件事(甚至同时进行):

啃硬骨头: 完成学校布置的,通常有一定难度的编程作业和实验。
项目攻坚: 参与课程设计、毕业设计或课外项目,从零开始构建一个实际的软件系统。
技术探索: 学习新的编程语言、框架、库,以便应对未来的工作需求或实现个人想法。
深度钻研: 尝试理解代码运行的底层原理,优化算法和程序性能。
解谜破障: 投入大量时间进行代码调试,修复bug,让程序能够正常运行并达到预期效果。
理论实践: 通过编写代码来验证和巩固课堂上学到的抽象理论概念。

所以,当他们说“每天写好几个小时的代码”时,这背后代表的是他们对这门学科的热情、投入和不断学习的努力。这可不是件轻松的事,但正是这样的磨砺,才能让他们真正掌握这门技术,成为一名优秀的程序员。这就像学任何一门手艺一样,没有大量的练习和实践,是不可能精通的。

网友意见

user avatar

虽然我不是计算机专业的,但平时还是喜欢折腾代码

写cpp的时候:

修改代码

提交到github

请求appveyor构建

等构建的时候恰一把apex

五分钟成盒切出去一看构建失败

再修改代码

再提交github

再请求appveyor构建

再来亿把apex

切出去这次构建成功了

下载构建好的文件

运行

闪退

接着改代码

devenv.exe已停止工作

重启vs2019

接着改代码

提交github

appveyor构建

再恰亿把apex

构建成功

下载下来运行

输出烫烫烫

处理字符编码问题

提交github

appveyor构建

又亿把apex

构建成功,下载运行

输出能看懂的内容了,但怎么输出和预期不一样啊

接着改代码

......

如此循环,一天就过去了

事实上大部分时间都在等构建


写js的时候:

改代码

打开chrome运行下看看

报错了

接着改

再运行

chrome内存泄漏,页面崩溃

重启chrome

再运行

又页面崩溃了

原来是我写的js有问题啊

改代码

运行

看上去似乎没问题了

minify一下

又不能运行了

检查为什么minify会玩脱

修复问题,提交上线

用户在1前面多打了个空格

数字变成字符串了

炸了

给输入框value加个trim吧

慌乱中不小心多打了一个引号

很好,一段js全炸了

翻了半天找到少打引号的地方补上

提交上线

用户啥也没输就点了确定,炸了

加个非空判断

提交上线

暂时太平了

user avatar

刷算法书

刷POJ

刷HDOJ

刷LeetCode

刷ProjectEuler

学Java

学LLVM

学Linux

学Python

学Haskell

学Clojure

学Erlang

学Linux内核

学服务器端编程

写专利

写论文

写需求文档

写项目申请书

写日后自己能看得懂的注释

读CPython源码

读Nginx源码

读glibc源码

读Redis源码

读大牛的Blog

读大牛的GitHub

读HackerNews

读Reddit

读Solidot

配Ubuntu Server

配OpenStack

配Git

配Vim

配Zsh

配KVM

配OpenVZ

配Docker

配Vagrant

配OpenVSwitch

写纯C,掉到pthread和mutex的坑里

为了提高性能,试图写lock-free的版本

写不出来

写Python调用C模块,掉到ctypes的坑里

刚从ctypes的坑里爬出来,又掉进pickle的坑里

pickle的坑直接hack进去效果拔群,最后被GIL坑死

写Java

老板丢给你一包class文件

告诉你已经没有源码了

让你修个历史遗留bug

只好反编译回去看

写Java

部署的时候碰到了OpenJDK的bug

调试一整天

写Haskell

自己智商不够

写Clojure

启动/运行慢成狗

为了实现某个功能开始自己造轮子

轮子造到一半觉得要写的完美是几乎不可能的事情

开始搜可以实现该功能的开源库

开始读充满了//TODO的开源库“文档”

文档读不懂or压根没文档

虽然没有文档,起码有代码诶

SourceInsight/Eclipse/Ctags+Cscope出场,直接读代码

宏满天飞

模板满天飞

void ***满天飞

结构体指针数组满天飞

开始安装开源库

缺某种奇怪的工具链

装!装!装!

依赖关系不满足

装!装!装!

最后遇上了dependency hell

千辛万苦装上了库,开始动手写

怎么功能跟文档里说的不一样啊

怎么还有种种奇怪的限制

怎么性能还这么烂

怎么之前的单元测试也跪了

好不容易写出来了

老板说:这尼玛是啥,这么丑

改!改!改!

老板又说:哎呀需求改了啊,三天能搞定不?

改!改!改!

当年写的时候糙快猛啊

当年写的时候没留好接口/做好模块化啊

当年写的时候没注意设计模式啊

忘了当年怎么写的了啊

终于有点时间做自己的东西啦

做点什么好呢

做个简单的源代码静态分析+代码结构可视化工具吧

嘿嘿嘿

动态语言写起来爽读起来恶心写起源码分析工具来就是天坑啊

看书

看《Language Implementation Patterns》

看《Modern Compiler Implementation》

看《Types and Programming Languages》

看看看不完了

不写了

刷知乎去

哎呀轮子哥的答案看不懂啊

哎呀RednaxelaFX菊苣答案里的名词一个都没听说过啊

哎呀十几岁的高中生搞安全秒我几条街啊

吾生也有涯,而知也无涯

你看,一天8个小时,怎么够啊

类似的话题

  • 回答
    好的,咱们就来聊聊那些计算机专业的学生,口口声声说自己“每天写好几个小时的代码”,他们到底在捣鼓些什么。这可不是什么神秘的宗教仪式,而是他们成长为合格程序员的必经之路,里面门道可多了去了。首先得明白,计算机专业可不是让你坐在那里光看电脑屏幕就行,它是一门实践性极强的学科。你说学生们在写程序,这“写程.............
  • 回答
    作为一名曾经在书海中摸爬滚打过的学生党,我深有体会,看到那些动辄几百上千页的计算机经典著作,确实会让人有点望而却步。尤其是在信息爆炸的时代,感觉很多内容似乎都能在网上找到碎片化的答案。那么,这些厚重的书籍,我们真的有必要“啃”下去吗?我个人觉得,答案是肯定的,但需要掌握方法,才能事半功倍。为什么那些.............
  • 回答
    恭喜你儿子即将迎来人生新阶段!送一台趁手的笔记本电脑作为礼物,绝对是个明智又贴心的选择,特别是对于学习计算机的他来说,这可是他开启新征程的“利器”啊。作为过来人(家里也有孩子走计算机这条路),给您好好掰扯掰扯,怎么挑一台既实用又不会“踩坑”的笔记本。别看市面上型号多得眼花缭乱,归根结底,咱得抓住几个.............
  • 回答
    好嘞!作为一个对计算机图形学充满热情的人,我来给你好好说道说道,系统学习这条路上,哪些书是你的好伙伴。这可不是什么流水账,而是我一路摸爬滚打总结出来的经验之谈。第一阶段:打下坚实基础(初窥门径,建立三维世界观)这个阶段的目标是让你明白,我们是怎么在一个平面的屏幕上“画”出逼真的三维世界的。你需要理解.............
  • 回答
    湖南大学材料学院当然有老师在计算机材料学领域耕耘。这可是个热门方向,融合了材料科学和计算科学,通过计算机模拟和数据分析来理解、设计和优化新材料。要详细讲讲,我们可以从几个方面来看:1. 计算机材料学的研究内涵与方向:计算机材料学,顾名思义,就是用计算机的手段来解决材料问题。它不是一个单一的学科,而是.............
  • 回答
    嘿,说起来,最近是不是感觉周围学习计算机的人比以前多太多了?不管是你的朋友、同事,还是社交媒体上的讨论,好像大家都在盯着这个“计算机”领域。这让人不禁要问:这玩意儿真的有那么香吗?值得这么多人一窝蜂地往里挤?我得说,这事儿吧,确实有点意思。就拿我自己来说,身边前前后后也认识不少做IT的朋友,从程序员.............
  • 回答
    哥们,听到你想从计算机跨到芯片这块儿,我得给你竖个大拇指!这绝对是个有远见的选择,未来发展空间巨大。不过,这中间的路可不轻松,得做好打硬仗的准备。我这儿跟你唠唠嗑,给你点实在的建议,希望对你有所帮助。一、 为什么是芯片?你真的了解吗?在往前冲之前,咱们先得冷静分析一下。计算机是个大概念,而芯片是其中.............
  • 回答
    这就像当年我第一次接触到“防火墙”这个词的时候,脑子里冒出来的画面完全是错乱的。我当时能想到的,无非就是那种古老的、砖石砌成的、能够阻挡火焰蔓延的实体墙。而计算机领域的“防火墙”呢?它明明是看不见的,是由一堆代码、一系列规则构成的,它的作用是保护我的电脑免受网络上的“火”(通常是恶意攻击)的侵扰。这.............
  • 回答
    很高兴为您整理了机器学习、数据挖掘和计算机视觉领域的优秀订阅号、微博和论坛。这些平台汇聚了大量的技术干货、最新研究、行业动态和交流机会,能帮助您快速提升专业知识和视野。一、 机器学习(Machine Learning)机器学习是AI的核心驱动力,涵盖了监督学习、无监督学习、强化学习等多个分支。关注这.............
  • 回答
    好的,为了给您提供一份更具人情味、更贴近实际研究的欧洲课题组介绍,我将尽量避免使用过于程式化或“AI味”的表达,而是从一个对计算科学充满热情的研究者的角度出发,为您梳理一些在计算化学、计算生物学和计算材料学领域颇具建树的欧洲课题组。请注意,科研领域发展迅速,课题组的研究重点和人员构成也可能随时调整。.............
  • 回答
    好的,我们来聊聊隐私计算这个挺有意思的领域。同态加密和安全多方计算(SMC)是其中的两大核心技术,它们能让数据在不泄露原始信息的情况下被计算或处理,这在数据安全和隐私保护日益重要的今天,价值可想而知。这篇文章咱们就来梳理一下,如果你想系统地学习同态加密和安全多方计算,可以从哪里入手,以及一条比较扎实.............
  • 回答
    你好!很高兴能为你推荐计算统计学(Computational Statistics)的学习资源和方法。这门学科融合了统计理论、算法和计算机科学,确实是当下非常热门且实用的领域。下面我将为你详细介绍一些好的资源、教材,以及一些学习建议,希望能帮助你在这个领域打下坚实的基础。什么是计算统计学?简单来说,.............
  • 回答
    关于考研和考博的优惠政策,以及是否会有计划录取本校学生人数更多的现象,这确实是很多同学关心的问题,也是一个挺值得深入聊聊的话题。首先,我们要明确一点:大部分学校在研究生和博士生的招生中,确实会存在一些对本校学生的倾斜政策,但这种倾斜并非绝对,也不是所有学校都以同样的力度和方式来执行。 这种“优惠”更.............
  • 回答
    你这个问题问得特别好,也是很多家长和考生在填报志愿时会有的一个普遍困惑。明明感觉学校每年的招生名额(也就是征集计划)都不少,为什么投档线依然居高不下,甚至有时候还会比往年还要高呢?这背后其实有多方面的因素在起作用,而且它们之间是相互关联的。咱们一步一步来捋一捋。首先,我们得明确一点:征集计划,它的出.............
  • 回答
    最近我把很多精力都放在了“理解”这件事上,这听起来有点虚,但对我来说,这是一种持续精进的过程,贯穿了我的很多学习和工作内容。核心技能:深度理解与高效整合信息这并非一项单一的技能,而更像是一种思维模式和工作方式的迭代升级。我一直在努力摆脱“浅尝辄止”的习惯,追求对信息背后逻辑、深层含义以及它们之间相互.............
  • 回答
    嘿,能在大二就想着做创新创业项目,并且瞄准深度学习和畜牧业这个结合点,真的很有想法!这个方向不仅紧跟科技前沿,而且解决了实际的农业痛点,非常有潜力。我来给你们一些具体的建议,希望能帮你们把这个项目做得扎实。一、 项目立项与调研:精准切入,发现真需求在开始之前,最最重要的一点是:千万不要凭空想象! 你.............
  • 回答
    这个问题,与其说是关于“废物”还是“必要”,不如说是关于存在的价值和生命意义的探索。一个不掌握计算机技能的大学生,他的人生并非就此黯淡无光,也并非就没有活着的必要。我们先来看看“不会计算机的废物大学生”这个标签本身。首先,这个标签可能是一种过于片面和狭隘的定义。 “废物”是相对的,也是主观的。 .............
  • 回答
    听到你这么说,我倒是挺理解你的感受的。毕竟,花了大把的时间和精力去985读计算机,最后发现实际能力好像还不如一个专科生,这搁谁身上都挺憋屈的。而且,“985计算机”这几个字,本来就自带光环,大家默认的应该是“精英”才对,结果来了个“比不过”,这反差确实有点大。这事儿吧,我觉得得从几个方面来看,不然很.............
  • 回答
    关于王小波的计算机水平,我们可以从几个方面来理解,并给出详细的阐述:1. 他对计算机的早期接触与理解: 时代背景: 王小波生活的年代(20世纪80年代、90年代),计算机在中国还属于新兴事物,并非人人可及。当时计算机的普及程度远不如现在,软件和硬件的获取也相对困难。 个人兴趣与学习: 王小波本身就是.............
  • 回答
    想把自己的电脑也加入到庞大的分布式计算网络中,为科学研究、算力共享或是某些特定项目贡献一份力量?这听起来是不是很酷?其实,这并不是什么遥不可及的事情,有很多途径可以让你实现这个想法。而且,你不需要成为一个计算机专家,很多操作都比你想象的要简单得多。下面,我就来详细说说,你可以通过哪些方式,让你闲置的.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有