美文网首页
一篇文章告诉你编程的一切(一)

一篇文章告诉你编程的一切(一)

作者: 风之谷的煤煤球 | 来源:发表于2017-04-26 20:09 被阅读0次

    1.从硬件到软件

      曾几何时,电脑的整合、构造和销售业务在数十年时间里一直都是一棵摇钱树。但后来利润空越来越小了。我们看到戴尔(Dell)重新私有化,捷威(Gateway)则被弘基(Acer)收购。这两家世界领先的硬件公司过去一直不碰软件,然而,现在如果你能卖软件,能把屏幕点亮,那你就是在卖可以无限再生的“无物”。无物的利润空间是很大的——除非另一个人在以更低的价钱出售“无物”,甚至无偿赠送。事实也正是如此,Linux之类基于自由软件的系统开始蚕食并最终鲸吞服务器市场,Google Apps等基于Web的免费应用也渐渐具备了取代桌面软件的能力。

    2.什么事算法?

        人们通常用“算法”(Algorithm)这个词来表示自己对科技很在行。记者喜欢说“Facebook的算法”或“Google的算法”,通常都是不准确的,他们在说的实际上是“软件”。       算法不一定要用到电脑,就像几何不一定要用电脑一样。算法是解决问题的,伟大的算法有自己的名字,就像艾兹赫尔·戴克斯特拉(Edsger Dijkstra)算法,它的作用是在网络图中确定最短路径。

        一种算法可以被转译为一个函数,该函数可以在软件执行时被调用。有的算法关系到图像处理,有的是为了提高数据存储效率,有的是为了对一个列表中的要素进行快速检索。多数算法是免费的,已经嵌入到编程语言里,或者辑录成库,放在互联网上供人下载。你可以在完全不考虑算法的情况下进行大量的编程工作——你可以通过代码的剪切、粘贴实现数据存入数据库,或打印一个网页等操作。

        戴克斯特拉说:“计算机科学不是关于计算机的科学,就像天文学不是关于望远镜的科学一样。”

    计算机科学有相当一部分是在于理解算法的效率——运行起来需要多长时间。电脑很快,但是会被拖慢——比如在一张巨大的地图上寻找两点之间的最短路径。Google、Facebook、Twitter等公司就是建立在基础的计算机科学之上的,非常在意效率,因为它们的用户操作数量十分惊人。它们完全有必要去寻找优秀的计算机科学家,包括很多博士,这些人知道是什么地方在拖累效率。计算机科学家是一个优秀的数学家,而一个有能力的程序员在数学上只要中等水平就够了。

    编程最困难的工作是处理那些无法计算的东西,设法把不可能的任务分解成细小的、可行的组件,从而营造出一种电脑在做事的印象,实际上它并没有在做,比如和人对话。这部分内容原来叫做“人工智能研究”,现在可能更多被归入“机器学习”或“数据挖掘”。

    3.标准程序库的魅力

    要衡量一门语言的优劣,关键不在它如何使用分号;要看每门语言的标准库。编程语言是用来写软件的软件。标准库是一系列可以重用和再运用的预置软件。想要高效的利用一门语言,深入理解他的标准库是一个办法。以Python为代表的许多语言准备了大量预先写好的代码模块,可以通过“软件包管理”工具随时下载。模块(或库、包)使用来扩展一种编程语言能力范围的代码。

    图像处理、音频处理、遇特殊的硬件互动,与数据库对话——这些都有专门的包。但你需要知道怎么找,知道他们叫什么名字。代码不只是存放在文件里的一堆费解的命令。它需要你在脑子里有一张地图,知道哪里有好用的库,哪里的文档最出色,哪里的论坛最有帮助。如果你不知道这些在哪儿,时间就会浪费在信息搜索上,而不是去创造有价值的新东西。

    4.不同编程语言有什么用?

    如果所有的电脑语言功能是一样的(让电脑做你想做的事情),那何必还要挑三拣四的呢?原因就好比你会选择自行车去运冰箱,或是找心理医生做身体检查。有的工具特别适合完成某种特定的任务。比如,让C语言和JAVA语言的程序员合作就很困难,因为C和Java使用不同的方式去呈现世界、构建数据、与电脑对话。团队里的人全都用一种语言是有好处的,在指示电脑去处理数据的时候,大家会有相同的思路,而一个大型机构的所有团队都使用一种语言就没有必要了。

    ——· 各种语言代表作品 ·——

    汇编语言:《吃豆人》、《蜈蚣》

    C: Unix、Linux内核、Python、Perl、PHP

    C++: Windows、Google Chrome、 F-35战斗机使用的软件jets

    Python:Instagram、Pinterest、Spotify、You Tube

    PHP:Facebook、Wikipedia、WordPress、Drupal

    Perl:BuzzFeed

    Java:Google、eBay、LinkedIn、Amazon

    Ruby:Twitter、GitHub、Groupon、Shoptify

    Linux 内核是用C写的。将你打印机和电脑连接起来的软件可能也是C写的。带给你Web页面的Web服务器很多是用C写的。它还是一门用来写其他语言的优秀语言——Python、PHP和Perl等等。C是用来创建系统的语言;它在电子计算中的作用,相当于文艺复兴学者的拉丁文。

    5.面向对象编程OOP——object-oriented programming

    面向对象编程语言的原型是Smalltalk,出自施乐帕罗奥多研究中心(Xerox PARC)的一帮天才之手,当时这家研究机构正值鼎盛。而C语言是在一个产业巨头AT&T下属的新泽西研究机构(贝尔实验室)诞生的,为的是解决手头的问题,而Smalltalk来自另一个产业巨头Xerox设在遥远加州的机构,为的是解决未来的问题。因此,Smalltalk对事物的呈现跟C是不一样的。C让你对整台电脑有一个概念;Smalltalk让你对整个现实世界抽象,让你把世界按类和方法等概念进行区分。C语言试图简化对电脑事务的处理,Smalltalk试图简化对人类事务的处理。

    6.代码与数据

    数据管理正是编程要来解决的问题。现在到处都是电脑,我们不断在产生数据,需要更多的编程工作。这是一个看不到出路的大难题,这就是为什么科技业的人挣钱这么多。他们不仅在卖可以无限复制的“无物”,而且由于卖出的的无限复制的无物实在太多,他们要创造一个无限复制无物的新门类,专门负责处理新产生的数据。这个门类现在叫做“大数据”。

    大型规模的工作很少能离开数据库。亚马逊、谷歌、雅虎、Netflix、Spotify都拥有强大的数据库。最常见的是关系型数据库,使用一种叫做SQL(Structured Query Language)结构化查询语句的语言编写的。人们在谈论数据库的时候经常会用到CRUD这个缩写,即创建Create、读取read、更新update和删除delete。关系型数据库是在70年代出现的,一只存活到现在。微软有Server; IBMyou DB2。SQL甲骨文的商业企业数据库要价不菲,越来越多的地方开始用自由软件数据库,比如PostgreSQL和MySQL。还有一种叫做SQLite的小数据库,由于轻巧、稳定和自由的授权条款,如今几乎所有的智能手机都在用它。

    相关文章

      网友评论

          本文标题:一篇文章告诉你编程的一切(一)

          本文链接:https://www.haomeiwen.com/subject/utxizttx.html