飞速飞逝的唯一一件事就是技术的进步。午餐后,一个筹码设计的朋友迅速地为自己辩解,他巧妙地解释说,摩尔定律意味着即使在度假期间,他也必须使自己的筹码速度每周提高0.67%。如果他不这样做,那么芯片的速度将不会每两年翻一番。
现在已经到了年,现在是时候评估一下未来的技术变化了,如果仅仅是为了帮助您知道将赌注押在未来的编程技能上的地方。
从物联网日益增加的安全隐患到无处不在的机器学习,编程的未来越来越难以预测。
云将击败摩尔定律
有反对者声称芯片公司陷入困境。他们不再像80年代和90年代太平年一样,每两年将芯片速度提高一倍。也许-但这不再重要,因为芯片之间的界限比以往任何时候都少。
过去,办公桌上盒子里的CPU速度很重要,因为,这样做的速度只能和里面的仓鼠旋转一样快。每隔几年购买一只更大,更快的仓鼠,您的生产率也将提高一倍。
但是现在桌面上的CPU几乎没有在屏幕上显示信息。大多数工作是在云中完成的,目前尚不清楚有多少仓鼠在工作。当您搜索Google时,它们庞大的云可能会占用10、20甚至1,只仓鼠,为您找到正确的答案。
程序员面临的挑战是找到巧妙的方法来灵活地为每个用户的问题灵活地部署足够的计算能力,以使解决方案足够快地运行,并且用户不会感到厌烦并流连于竞争对手的站点。有很多可用的电源。云公司将让您处理用户的迷恋,但您必须找到易于并行运行的算法,然后安排服务器同步运行。
物联网安全只会变得更可怕
去年秋天出现的Mirai僵尸网络对于正在创建下一代物联网的程序员来说是一个警钟。这些聪明的小设备可以像其他任何计算机一样被感染,并且它们可以使用其互联网连接造成严重破坏并让战犬滑倒。众所周知,狗可以假装成为互联网上的任何人。
问题在于当前的小工具供应链没有任何修复软件的机制。小工具的生命周期通常从制造工厂到仓库再到用户的漫长旅程开始。在组装和首次使用之间展开长达10个月的时间并不常见。在漫长而漫长的几个月中,这些小工具已被运送到世界各地。他们坐在装在集装箱中的箱子里。然后,他们坐在大型盒子商店或仓库的货盘上。到他们打开包装的时候,他们可能已经发生了任何事情。
挑战在于跟踪这一切。每当时钟改变时,很难更新烟雾探测器中的电池。但是现在我们不得不怀疑我们的电烤箱,干衣机以及屋子里的几乎所有东西。软件是最新的吗?是否已应用所有安全补丁?设备数量的增加使得对监控家庭网络进行智能化的工作变得更加困难。我的无线路由器连接了30多个IP地址的设备,我只知道其中24个的身份。如果我想维护一个智能防火墙,我会发疯为合适的智能设备打开合适的端口。
为这些设备提供运行任意代码的机会是一种祝福和诅咒。如果程序员想要执行聪明的任务并让用户拥有最大的灵活性,则平台应该开放。这就是制造商革命和开源创造力蓬勃发展的方式。但这也为病毒编写者提供了前所未有的机会。他们需要做的就是找到一个品牌的未更新特定驱动程序的小部件-voilà,他们已经找到了数百万个预装宿主机器人的小部件。
视频将以新方式主导网络
HTML标准委员会开始将视频标签嵌入HTML本身时,他们可能没有重新制作娱乐节目的宏伟计划。他们可能只想解决插件产生的故障。但是基本的视频标签会响应JavaScript命令,这使得它们本质上是可编程的。
这是一个很大的变化。过去,大多数视频都是被动消费的。您坐在沙发上,按“播放”按钮,然后查看视频编辑器决定的内容。观看该猫视频的每个人看到猫的顺序都与猫视频的创建者决定的顺序相同。当然,一些快进但录像带可以像瑞士火车一样规律地到达结论。
JavaScript对视频的控制是有限的,但最精明的Web设计人员正在寻找巧妙的方法将视频与无缝页面中的其余页面集成在一起。这为用户提供了控制叙事如何展开以及与视频互动的可能性。没有人可以确定作家,艺术家和编辑的想象力,但是他们需要编程才能实现这一目标。
许多最漂亮的网站已经在聪明的地方紧紧地播放着视频。很快他们都会想搬东西。放置IMG带有JPEG文件的标签是不够的。您将需要获取视频-并处理分散浏览器世界的标准问题。
控制台将继续取代PC
在游戏机上很难生气。游戏很棒,图形也很棒。他们构建了出色的视频卡和相对稳定的软件平台,使我们可以在客厅放松身心,梦想着射杀坏人或投掷足球。
客厅控制台仅仅是个开始。房屋其余部分的制造商也走同样的道路。他们本可以选择开源生态系统,但制造商正在构建自己的封闭平台。
这分散了市场,使程序员更难保持一切顺畅。一个电灯开关上的电源不会在另一个电灯上运行。吹风机可能会说与烤面包机相同的协议,但事实可能并非如此。对于程序员来说,这是更多的工作,以加快速度,减少重用我们工作的机会。
数据将为王
在年美国总统大选之后,用词赞美的专家取笑了用数据赞美的专家,这表明他们的所有统计分析都是愚蠢的做法。预测是错误的,大数据人员看起来很糟糕。
他们是如何得出这个结论的?通过将一组数字(预测)与另一组数字(选举结果)进行比较。他们仍然需要数据。
数据是我们在互联网上看到的方式。光带给我们有关现实世界的信息,但是数字告诉我们有关在线的一切。有些人可能会根据不完美的数字做出错误的预测,但这并不意味着我们应该停止收集和解释这些数字。
数据收集,整理,整理和解析将继续是企业最重要的工作之一。决策者需要数字,程序员将继续承担以更易于理解的方式交付数据的任务。这并不意味着答案将是完美的。上下文和直觉将继续发挥作用,但是处理数据的需求不会仅仅因为一些人预测唐纳德·特朗普不会当选而消失。这意味着程序员需要做更多的工作,因为我们对构建更大,更快,更数据密集型软件的需求没有尽头。
机器学习将成为新的标准功能
当大学里的孩子上一门名为“数据结构”的课程时,他们将学习祖父母编写代码时的生活,而不必依赖于称为“数据库”的层的存在。真正的程序员必须进行存储,排序,并在没有Oracle,MySQL或MongoDB的帮助下连接充满数据的表。
机器学习算法距离实现这一目标还需要短短的几年。目前,程序员和数据科学家需要编写许多自己的代码以执行复杂的分析。很快,R之类的语言和一些最聪明的商业智能工具将不再是特殊的,而已成为大多数软件堆栈中的常规功能。它们会从PowerPoint销售平台中的四到五张特殊幻灯片变成理所当然的建筑图纸中的一个小矩形。
它不会在一夜之间发生,也不清楚确切的形状,但是很明显,越来越多的业务计划依赖于机器学习算法来寻找最佳解决方案。
随着PC继续淡出,UI设计将变得更加复杂
似乎每天都有更少的理由让您使用PC。在智能手机,客厅控制台和平板电脑的兴起之间,似乎仍然坚持使用PC的唯一人群是需要上交作业的办公室工作人员和学生。
对于程序员而言,这可能是一个挑战。过去很容易假设软件或网站用户将拥有键盘和鼠标。现在,许多用户都没有。智能手机用户正在将他们的手指捣碎到玻璃屏幕上,而该屏幕几乎无法容纳所有26个字母。控制台用户正在按遥控器上的箭头键。
网站设计变得越来越棘手,因为触摸事件与点击事件略有不同。用户具有不同的精度,并且屏幕尺寸差异很大。保持直截了当并不容易,而且只会在未来几年变得更糟。
开放的尽头
PC的通过不仅是特定外形尺寸的缓慢消失。这是一个特别开放和欢迎的市场的消亡。PC的死亡将终结各种可能性。
当PC首次出厂时,程序员可以编译代码,将代码复制到磁盘上,然后将这些磁盘放入ziplock袋中,这样,全世界都可以买到。没有中间人,没有看门人,没有严厉的中央力量要我们说:“妈妈,我可以吗?”
控制台被严格锁定。没有资金投入,没有人会进入那个市场。应用程序商店虽然开放一些,但它们仍然是围墙花园,限制了我们的工作能力。当然,它们仍然对跳入正确的障碍的程序员开放,但是任何犯错误的人都可以被抛弃。(以某种方式,他们总是在恶意软件泄漏时延迟我们的应用程序。请看图。)
这种区别对于开源很重要。这不仅是关于在购物袋中出售软盘。我们正在失去共享代码的能力,因为我们正在失去编译和运行代码的能力。PC的终结是开放性终结的重要组成部分。目前,大多数阅读此书的人可能都拥有一个不错的桌面,该桌面可以编译和运行代码,但是这种情况正在慢慢改变。
更少的人有机会编写和共享代码。对于所有有关教导下一代编程的需求的讨论,用于分发开放代码的实用向量都较少。
自主运输将继续存在
不只是汽车。有些人想制造不受公路需求限制的自动驾驶飞机。其他人则想为轻便的旅行创建自主滑板。如果它移动了,一些黑客就梦想着告诉它去哪里。
程序员将无法控制人们在屏幕上看到的内容。他们将控制人们去往何处以及如何与世界互动。人只是游戏的一部分。我们所有的东西也将自动移动。
如果您想从市区著名的厨师那里吃晚餐,可以将带加热室的自动滑板带到您的家中。如果您想割草,可以使用自动割草机代替附近的孩子。
程序员可以利用他们在第一次互联网革命中提出的所有很棒的想法。如果您认为弹出广告在互联网上不好,请等到程序员付钱后,才能将您的自动溜冰鞋转移到新餐厅的厨房通风口之外。饿了吗?
法律将找到新的限制
当人们开始争辩合理寻找我们的文件意味着什么时,《人权法案》上的墨水几乎没有干。现在,超过年后,我们仍在争论细节。
技术的变化为法律开辟了新途径。几年前,最高法院裁定车辆追踪技术需要逮捕令。但这只是警察将追踪器放在车上的时候。当有人传唤Waze,GoogleMaps或其他数百个缓存我们位置的应用程序中的跟踪数据时,没人真正知道适用什么规则。
如何影响机器的运行呢?下载数据是一回事,但也很想更改数据。警察(或私人演员)伪造文件,标头或碎片是否公平?目标是真正的恐怖分子还是仅仅是在禁止停车的地方停了太长时间却没有给电表供电的人,这有关系吗?
这些只是未来几年开发人员面临的几个大问题。软件设计师需要在设计过程中预见这些问题。在编写任何代码之前,他们需要考虑有关隐私和法律的问题。如果他们不这样做,那么公司很有可能会在以后被这些问题蒙蔽,这很可能是大规模的。
而且,代码本身是法律的一种形式。程序员定义什么软件可以做什么和不可以做什么。在编写代码时,我们实际上是在定义世界一个小角落的自由与局限。
容器将统治
从理论上讲,我们不需要容器。您的可执行文件应该简单地运行,操作系统应该管理权限和计划,以便所有可执行文件都可以使用。dream,那个梦想比以往任何时候都快退去。单独生活的可执行文件越来越少。许多人需要各种图书馆或其他特殊设施的不同版本。甚至Java之类的“随处运行”技术也遇到了麻烦,因为虚拟机的版本很多。
好的虚拟机可以解决这个问题,但是它们很胖。容器既薄又轻。它们易于使用,因此不可能不被爱。我们将在企业的各个级别看到越来越多的容器,很难抗拒它们的魅力。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以