我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。
几个误区
初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:
认为计算机技术等于编程技术:
有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。
其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。
咬文嚼字的孔已己作风:
我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,像计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生像学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。
在学习编程的时候这些学生也是这样,他们确切的记得C++语法的各个细节。看完了C++教程后看《Thinking in C++》(确实是好书),《Inside C++》,《C++ reference》,this C++, that C++……,然后是网上各种各样的关于C++语法的奇闻逸事,然后发现自己又忘了C++的一些语法,最后回头继续恶补…。有个师弟就跟我说:“C++ 太难了,学了这里忘了那里,学了继承忘了模板。”我的回答道:“你不去学就容易了”。我并没有教坏他,只是告诉他,死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。我有个结论就是,实际的开发过程中对程序语法的了解是最微不足道的知识。这是为什么我在为同学用Basic(我以前从没有学过它)写一个小程序的时候,只花了半个小时看了看语法,然后再用半个小时完成了程序,而一个小时后我又完全忘记了Basic 的所有关键字。
不顾基础,盲目追赶时髦技术:
终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来,变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why 而不是how。时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。但在IT领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个linux(这是许多人嘲笑理论课程无用的原因),但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。
一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方:假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。
几个重要的基础课程
如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。
大学英语-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。
数据结构和算法-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
软件工程-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。
对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。如果不是,请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。
你还可以在优快云上阅读到许多书评。这些书评能够帮助你决定读什么样的书。
日三省乎己
每天读的书太多,容易让人迷失方向。一定要在每天晚上想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣,在一本书上花的时间太长还是不够等等。同时也应该多想想未来最有可能出现的应用,这样能够让你不是追赶技术潮流而是引领技术潮流。同时,努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这样做能够让你真正成为一个软件“研发者”而不仅仅是一个CODER。
把最多的时间花在学习上
这是对初学者最后的忠告。把每个星期玩CS或者CS的时间压缩到最少,不玩它们是最好的。同时,如果你的ASP技术已经能够来钱,甚至有公司请你兼职的话,这就证明你的天分能够保证你在努力的学习之后取得更好的收益,你应该去做更复杂的东西。眼光放长远一些,这无论是对谁都是适用的。
相信你已经能够决定是否学习C#或者什么时候去学它了。
相关推荐
System Verilog学习笔记(十九)——覆盖率
覆盖率是用来衡量验证精度和完备性的数据指标。也可以告诉我们在仿真时设计的哪些结构被触发,哪些没被触发。高质量的验证需要满足以下三个条件。
程序员是做什么的(非常详细),零基础入门到精通,看这一篇就够了
程序员是做什么的(非常详细),零基础入门到精通,看这一篇就够了
从零搭建一个AF架构项目:基于TIA Portal V19和S7-PLCSIM的仿真调试全流程
本文详细介绍了如何在TIA Portal V19环境中从零搭建西门子Automation Framework(AF架构)项目,包括环境准备、硬件组态、核心组件创建、项目架构分层实现以及仿真调试全流程。通过模块化编程和标准化接口设计,AF架构显著提升工业自动化项目的开发效率和维护便利性,特别适合S7-1500系列PLC的应用开发。
2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆破、文件、隐写、逆向、PWN等全套工具
经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!
中断向量表配置不当引发Default_Handler死循环问题解析
本文深入解析STM32开发中因中断向量表配置不当导致的Default_Handler死循环问题。以STM32F407VET6为例,详细阐述中断向量表的工作原理、常见触发场景及系统化排查方法,并提供使用STM32CubeMX的正确姿势和手动配置的注意事项,帮助开发者快速定位并解决这一常见难题。
零基础玩转华为AP 4050DN-HD:FAT模式家庭无线网络配置实战
本文为零基础用户提供华为AP 4050DN-HD从FIT模式转换为FAT模式的完整实战教程。详细介绍了固件升级、模式转换以及配置家庭无线网络(包括路由、DHCP、Wi-Fi和NAT)的每一步操作,帮助用户将企业级瘦AP改造为高性能家庭胖AP,打造稳定可靠的家庭网络环境。
初学编程,学哪种语言比较好?
学习编程语言之前,首先要搞清楚“编程语言”这个概念。我们通过有固定格式和固定词汇的“语言”来控制他人,让他人为我们做事情。语言有很多种,包括汉语、英语、法语、韩语等,虽然他们的词汇和格式都不一样,但是可以达到同样的目的,我们可以选择任意一种语言去控制他人。 同样,我们也可以通过”语言“来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming Language)。编程语...
Vue+OpenLayers:解决中国境内OpenStreetMap地图加载问题
然而,在使用OpenLayers和Vue框架搭建地图应用时,很多中国开发者可能会遇到一个常见问题:OpenStreetMap(OSM)地图无法正常加载。为了解决这个问题,我们可以使用其他方式获取地图数据,比如使用国内的地图服务提供商。通过使用国内地图服务商提供的地图数据,我们可以解决OpenStreetMap地图加载问题。然后,我们创建一个OpenLayers地图对象,并指定地图图层的源为国内地图服务商提供的地图URL。属性,可以将地图的中心点和缩放级别调整到我们需要的位置。
程序员分哪几种,分别薪资是多少
你知道程序员分哪几种吗,这里带你一起来了解一下哈
把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库
摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅
手把手完整实现STM32+NB-IoT+MQTT+ThingsCloud云平台+手机APP(Android或iOS)及微信小程序及Web app 应用
本教程以远程温湿度显示及点灯作为示例。最终效果实现本地OLED显示屏、云平台和手机APP、微信小程序和Web App可远程查看温湿度数据,并可远程控制LED灯亮灭。以此完成基于MQTT协议的NB-IoT远程发布订阅数据,以此在本教程基础上可扩展开发更多的功能。
linux初学者_Linux上的软件开发初学者注意事项
linux初学者Linux is a great platform for software development targeting servers or backends. In general, working on Linux is very productive. The problem that beginners on Linux face is the the learning ...
【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)
本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。
【亲测免费】 Modbus软件开发实战指南 PDF 下载
Modbus软件开发实战指南 PDF 下载 【下载地址】Modbus软件开发实战指南PDF下载 Modbus软件开发实战指南 PDF 下载 项目地址: https://gitcode.com/open-source-toolkit...
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
对ARM初学者的一些建议
1. 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
商品库存管理系统 - Java + SQL 初学者天堂
商品库存管理系统 - Java + SQL 初学者天堂 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到一个专为初学者设计的商品库存管理系统!本项目结合了Java编程语言和SQL数据库技术,提供了一个轻量级的解决方案来管理商品库存。无论是计算机科学的学生还是想踏入软件开发领域的爱好者,这个项目都是学习实际软件开发流程、Java编程基础以及数据库操作(特别是MySQL)的绝...
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
2020-02-22
本人刚学代码,专业是软件开发的,目前只学了C#语言,有没有大佬能给我这个刚入坑的萌新一点关于这个专业的建议和注意事项呢?
iOS软件开发教程:Swift语言入门与第一个App实战
学习iOS软件开发,意味着进入一个由Swift语言和苹果生态系统构建的精确世界。这个过程不仅要求你掌握编程语法,更需要理解苹果的设计哲学和上架规范。对于初学者而言
轻松上手:VMware虚拟机与Windows Server 2016系统安装指南
轻松上手:VMware虚拟机与Windows Server 2016系统安装指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今的数字化时代,虚拟化技术已成为IT基础设施的重要组成部分。VMware作为虚拟化领域的领导者,其产品广泛应用于企业级和个人用户中。本项目提供了一份详尽的指南,帮助初学者和小白用户轻松掌握VMware虚拟机的安装步骤,并成功搭建Windo...
PowerBuilder常用函数功能和用法解析
郭宝利先生在他的帮助文档里总结的一个系统用到的所有函数,他们也是软件开发中常用的,为了方便查阅,我把这些函数按照字母顺序进行了整理并添加了使用方法,方便我和一些其他的初学者学习使用: 1.AcceptText 将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中)。 用法: dwcontrol.AcceptText ( ) dwcontrol:数据窗口控件名 返回值:Integer。函数执行成功时返回1,出现错误(比如数据不满足有效性规则)时返回-1。 注意: (1)在将数据放入到当
mysql python安装教程视频_python详细安装教程|如何安装MySql?MySql安装教程
MySql是我们常见的一款小型数据库,它可以储蓄一些数据,它在软件开发起着很重要的作用。所以开发人员都要懂得安装它。如果你是开发初学者,实在不懂得如何安装MySql,不要紧,那么你就赶紧看看小编整理的MySql安装教程吧!方法/步骤:1、打开下载的MySql安装文件MySql-5.7.10-win32.zip,双击解压缩,运行“Setup.exe”。勾选接收许可协议,按“Next”继续。2、选择安...
【亲测免费】 CODESYS V3 基础编程指南下载
CODESYS V3 基础编程指南下载 【下载地址】CODESYSV3基础编程指南下载 CODESYS V3 基础编程指南下载 项目地址: https://gitcode.com/Open-source-documentation...
TSPi Tools 使用技巧(绝对原创)
主要是为初学者提供一些TSPi工具使用的一些方法及其注意事项http://www.donews.net/rside/archive/2004/08/16/69231.aspx 这几天,好辛苦,在赶TSPi的作业TSPi = the introductory Team Software Process 也就是小组软件开发过程。 具体请看后面的网址。 我们直接进入正题:
ZYNQ-IIC
ZYNQ-IIC 一.IIC协议简介 IIC总线协议只需要两根线(SCL和SDA)就能完成通信和UART不同,UART需要设置波特率IIC不需要,IIC时钟速率:最大400K,一般不用这么高的频率,通常标准100K即可。IIC发送数据顺序是‘先发送高位再发送低位’,当然对于FPGA来讲先发高位或低位都无所谓,FPGA可以自定义,一般都是先高后低,需要了解以下几点‘从机地址’,‘寄存器地址’。 IIC时序,0为写,1为读 二.环境搭建 添加ZYNQ,双击ZYNQ进行内部配置 把PS-PL Configur
5分钟快速制作个人软件教程及成品展示
5分钟快速制作个人软件教程及成品展示 去发现同类优质开源项目:https://gitcode.com/ 本资源文件提供了一个详细的教程,帮助你在短短5分钟内制作出一款属于自己的软件。教程内容包括从HTML到exe文件的转换,以及如何封装exe文件,最终生成一个完整的软件安装程序。 教程内容概述 HTML转exe 安装HtmlCompiler 导入HTML程序 项目配置 打包HTML项目 ...
学生信息管理系统(Java编写,包括所有源代码)
学生信息管理系统(Java编写,包括所有源代码) 去发现同类优质开源项目:https://gitcode.com/ 项目简介 本仓库提供了一个完整的学生信息管理系统,该系统由Java语言编写,包含了从需求分析、系统设计到最终实现的全部源代码。该资源文件详细记录了开发过程中的每一个步骤,包括各种软件工具的使用方法和截图,非常适合学习和毕业设计的需要。 资源内容 需求分析:详细描述了学生信息管理系统...
2144



被折叠的 条评论
为什么被折叠?



