程序员到底为什么要掌握数据结构与算法?
周末了,闲聊几句。
当代程序员,也就是我们,其实是非常幸运的,为什么?因为前人,也就是那些大牛已经为你铺好路了。
大牛铺路导致的后果就是整个计算机系统像这个汉堡包一样是分层的:
越是上层越抽象,用起来也就越方便。
大牛们是怎么铺路的
最开始的计算机只是一堆 CPU 与内存等硬件,要让这群大爷工作需要直接汇编编写机器指令。
这也太麻烦了吧,因此那些大牛鼓捣出一个叫做高级语言的东西,现在方便多了,但程序不能只运行在一种架构上吧,为了让程序可以不加改动的到处运行标准库出现了,标准库对上层屏蔽了底层差异。
现在问题解决了吧,但是别着急,还没完呢!
程序使用的数据结构和算法太复杂了,每次都要重头开始写一个二叉树可不是一件有意思的事,怎么办呢?
大牛们都已经替你想好啦,直接把这些数据结构和算法以库的形式集成到语言中,就像 C++ 的 STL,Java的容器,想使用数据结构吗?简单的很,你只需要知道数据结构和算法的名字就足够了,剩下的查查接口文档,够方便吧。
这些都是小意思,还有更牛的,像搭建一个网站、编写一个App,其实这些写的代码大同小异,为什么要一遍遍重复造轮子呢?程序员的时间可是很宝贵的,怎么办?大牛们依然很贴心的为你想好了,于是框架应运而生。
想搭建一个网站简直不要太容易,简单几行代码,一个功能完备的web server就跑起来了,现在还有谁说编程难吗?什么都给你想好了。
我们呢?
大牛铺好了路,于是这样一幕就出现了:
大牛们提供的技术使用起来就像搭积木一样容易!只要你的需求不超过积木的表达能力那么就可以愉快的用下去,根本就不用关心下一层是如何实现的。这就是框架本身的目的以及优势,用起来很容易,这也是为什么很多人对此趋之若鹜的原因。
但是这样也有坏处,那就长此以往你会被锁死在这一层。
怎么办?
一旦依赖的这层技术不能满足需求,你就会惊讶的发现自己根本没有学会编程,这时你才能意识到各种底层技术以及数据结构算法的重要性,本质上这些才是计算机科学的核心,这些核心技术赋予你层级跃迁的能力,这样你就不会被锁死在某一层中了,当这一层不能满足你要求是你可以自己造出新的一层,这其实就是大家眼中那些大牛在做的事情。
程序员到底为什么要掌握数据结构与算法?相关推荐
- 一般项目中哪里体现了数据结构_优秀程序员都应该学习的数据结构与算法项目(GitHub 开源清单)...
前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 强烈推荐 GitHub 上值得前端学习的数据结构与算法项目,包含 gif ...
- 初级程序员软考重点6 数据结构与算法
初级程序员软考重点6:数据结构与算法 一.数据结构和算法 1. 逻辑结构 (1)线性结构 (2)非线性结构 2. 存储结构 3. 顺序表 4. 链表 二.数组和字符串 三.矩阵 1. 特殊矩阵 2. ...
- 程序员到底是一种什么样的存在?
互联网行业工资高,待遇好,这是众所周知的,但并不是所有岗位工资都那么高,除了那些高管啊,工资最高的就是程序员了,那程序员工资到底有多高?他们又是怎样一群人呢?作为互联网行业的资深民工,今天我就跟大家聊 ...
- web前端程序员到底值多少钱?
对于互联网公司来说用户就是上帝,做好客户体验一切才有可能.所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用.那么web前端程序员到底值多少钱? web前端程序员到底值多少钱? ...
- 做个程序员到底好不好
今天闲着无事,我们就来聊聊做个程序员到底好不好? 问题 我今年27了,大学学的是经济与贸易,我现在转行做IT可以转吗? 我大学学的是建筑设计专业,今年30,想转行做IT晚不晚? 我今年高三了,我想知道 ...
- 数学149的女学霸,直言想当程序员!女生当程序员到底行不行?
最近一段时间,全国多个省市的高考分数线录像出炉,各地又多了一堆学霸秀分数了,他们的专业选择也成为网友们津津乐道的闲谈.这两天有报道称,四川成都一学校的女学霸出名了,在采访中她透露自己高考分数达到了69 ...
- 高级程序员到底长什么样子?
我们的中国文化,对"面子"看得特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外. 但是你真要问每个人,你认为的高级 XXX 是什么样子的,估计每个人都有 ...
- 李喆:程序员到底怎么了
李喆:程序员到底怎么了 我们是这样的一群人:每天都在"努力"的工作着,每天都和计算机打交道,泡在网上,打游戏,查资料,发微博.可是有一天,突然意识到,我们的未来在哪里,每个月那 ...
- 程序员到底应该学什么?!
以前听别人说大公司和小公司在招牌上的差异,自己总是不信,总是沿着自己设计的路一直走,直到碰壁了,才终于醒悟!所以在此以一个过来人的身份再说:大公司和小公司在招聘上的差异,程序员到底应该学什么!可能没有 ...
最新文章
- 使用C#调用外部Ping命令获取网络连接情况
- VMware vSAN6.7 设计和优化 vSAN 主机--
- /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh: No such file or directory解决方案
- MFC/VC++中怎样设置位图按钮并且位图不会覆盖文字——–位图按钮
- 函数的作用域在各浏览器的混乱情况
- java8 camel_WildFly 8的Camel子系统集成了Java EE –入门
- FreeRTOS任务挂起与解除
- 编写可复用的自定义按钮
- JavaScript的NaN-唯一 一个自己不等于自己的对象!!
- 如何连接禅道的mysql_禅道一键安装包如何实现mysql异机连接
- 游戏鼠标的dpi测试软件,怎样测试鼠标DPI印象中有这样的软件,但可以用游戏测试...
- TASKCTL连接不到服务端的几种情况和解决办法
- 阿里巴巴Java开发手册详细版本
- 电压比较器工作原理 -----运放入门,重点!!!
- 手机变身电脑摄像头 Droidcam使用
- 【DT】大数据之数据采集
- mysql 单表 子查询_04 数据库入门学习-单表查询、多表查询、子查询(示例代码)...
- 断言(C++大师Andrei Alexandrescu的文章)
- c语言 自动计时的秒表,c语言实现的简单秒表计时器
- (机器学习)随机森林填补缺失值的思路和代码逐行详解
热门文章
- 了解下WSDL 绑定
- 如何识别和避免间谍软件
- java游戏加入图片,急!急!求大神给这个小游戏加个背景图片
- poj1523(割点)
- poj3370(抽屉原理)
- LG30刷小米系统_华为手机适合刷小米系统吗?
- php sqlsrv_query,sqlsrv_query
- kafka-2.11-2.3.0版本配置文件参数详解_Kafka版本特性总结
- 伸缩门遥控器c语言程序,急求求c++编程高手,求50的阶乘,要求结果是精确的整数,打印在屏幕上。...
- c语言程序设计数据输入的,1.2 C语言的发展与特点免费阅读_C语言程序设计教程免费全文_百度阅读...