有关编程的12个猜想

  英文原文:12 predictions for the future of programming

  编程世界的将来如何目前仍难预料,但可以肯定的一点是技术一直在加速发展。以下搜罗出 12 个独特的视角猜想,我们一起来看看有哪些猜想在不久的将来就能变为现实?

  1. GPU接班 CPU

  游戏玩家们热衷于吹嘘自己的显卡有多快多高端,全开特效有多少多少 FPS,而事实上 GPU 前进的步伐不会仅限于此。物理学家利用 GPU 来进行高速微观分析,航天学家利用 GPU 来模拟天体运动,生物学家利用 GPU 来研究生物种群规律。未来的编译器应可直接运作于 GPU,摆脱对 CPU 的依赖,使得 GPU 的使用更加普遍。

  2. 数据库能进行更复杂的数据分析

  将来数据库能做更多的工作,而不仅仅是数据仓库。如商业智能分析,数据模型抽取,大数据应用等等。但要进行如此高强度的复杂运算,数据的搬运成本是成败的关键。如果有个数据引擎能直接处理杂乱无章的海量数据,而无需人为地把数据放入一个个独立的大数据包然后再处理,这样对数据分析速度将带来革命性提升。

  3. 无处不在的 JavaScript

  JS 将不仅作为开发语言来使用。目前 JS 除了活跃于浏览器,在服务器端也开始崭露头角,如 NodeJS。浏览器式的 HTML5 应用在运行性能上给了开发者足够的信心。

  一方面 JS 如机器码那样玲珑,另一方面提供了良好的 Web 轻量级支持。浏览器方面大有吞噬整个平台的架势;Chrome OS 和 Chrome book 的出现,让人们不禁思考:JS 和浏览器还有什么不能做的?

  4. 全民皆 Android 

  相机备制造商如尼康,迫于移动端越来越高端的硬件与技术压力,已经开始在自家相机上运行 Android 系统,直接执行 Instagram 等社交软件。此外,Android 智能电视,电冰箱,耳机等也相继涌现。

  尽管 UI 一环仍被人诟病,不够方便过于复杂, 但一旦 Android 生态圈建立,渗透成为数字家庭的“内核”,设计者们定会着手解决该问题。此外,传统 PC 制造者也嗅到了出局的味道,开始着手让 Android App 直接在 PC 上运行,传统的 Windows 应用或许将迎来更艰难的发展困境。

  5. 广义互联网——物联网

  Android /Linux 等平台热潮持续的一个良副作用是不断推动更多的事物成为网中物。例如重要的日常之物-汽车。导航与购物成为叩开互联的敲门砖;诸如热点提示,广告营销等功能的开发为开发者提供了更多的赚钱机会。

  关键的一步是要区分开各个领域所关注的要点。例如:针对不同年龄段开发相应的智能玩具,智能温控设备需要连接天文台并读取相关信息。APIs 在其中将发挥重要的支援作用。

  6. 新开源环境

  Android ,Ubuntu,MySQL 等平台/工具的成功,为开源环境注入了源源不断的活力与动力。但是一个亟需的解决的问题是:开源后,如何寻找足够的资金来支援可持续发展?目前似乎还没有太多的成功例子来说明“开源=赚钱”。

  大多数企业所发布的开源资源更贴切的说法应该是演示版,只不过挂上了开源的头衔。开发者对于其核心秘密目前还没有太多的讨价还价空间。优秀的开源项目将会给开发者更多的发挥空间,形成新的开源环境。

  7. 更丰富的 WordPress 类在线内容管理系统

  美政府先前倾力打造的保险交易网站被认为是个很大的失误---自行开发。现时基本没有人再这么大费周章地开发自己的内容系统了。WordPress,Joomla,Drupal 等都可让我们迅速地构建自己的 Web Apps,丰富的插件功能更是如虎添翼。如果日后还有更直观的数据浏览系统支持类似于 PHPMyAdmin 和调试工具支持,类似的管理系统会迈进另一个发展的里程碑。

  8. 插件式开发取代完全编程 

  PhotoShop 能成为最广泛使用的图片编辑工具,最根本原因之一在于它提供了海量的插件支持。类似的插件式开发意味者程序员将更多地进行代码片段式而不是进行传统的完全编程。轻巧的插件式编程可以利用整个微开发环境中的一切,更加灵活简便。

  9. 命令行的生命延续

  或许这与大部分人的想法相悖,命令行并不会马上就结束自己的旅程。虽然越来越多的工具提供了拖拽式开发,但仍存在为数不少的终端式文本编辑器式的工具,甚至某些工具还只支持命令行模式。

  命令行的生命力在于轻巧和使用广泛。我们可以轻松地对一个任务脚本进行扩展或把它附加到另一个功能脚本,这是目前拖拽式编程的阿喀琉斯之踵。

  10. 简化之路漫漫

  过去 50 年,程序员尽了最大的努力来培养新一代开发者,这可以说是成功的----但还仅是最基础部分。编程福音者奉行全民皆程序员的宏伟目标,同时会争取更多的资源支持。但真正的懂编程是要明白每次按键后的 0 与 1 运作过程,是要明白创造软件的方法学与开发环节的每个细节。教会别人知晓 if-then-else 看上去很美,但这并不能说就能带来更多的程序员。

  11. 外包与内包针尖对麦芒

  人们普遍认为所有的程序设计工作将会被安排给全球薪酬最低的国家。此外,根据经济学推断,越来越多的劳动密集型工作将会被自动化工具或机器取代,真正的工作机会将会留给懂得商业的人。

  一旦上述设想成真,外包服务团队将两面受敌。一方面不得不与新的自动化工具进行抗争,议价空间会被进一步压缩;另一方面,企业内部团队会加强内生性培养,使得在外包合同谈判上占据主动。

  12. 管理者对程序设计更加外行

  有时候与不懂编程的人讨论需求是最头疼的事情,而结局往往是令人沮丧,讨论双方都没有得到自己想要的东西。

  管理者对基础技术认知的浅薄,往往造成招聘中年龄歧视的最根本原因之一。一方面认为年轻一代更掌握前沿技术,自己不用再花时间去认识;另一方面觉得年轻一代更加卖力工作。

  因此,整个工作环境看似朝气蓬勃,实质是一个仅仅奉行够用就好的中庸而又机械般运转的工作室。

时间: 2024-10-10 22:55:54

有关编程的12个猜想的相关文章

hihocoder offer收割编程练习赛12 A 歌德巴赫猜想

思路: 枚举. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 6 const int MAX_N = 1000005; 7 8 int prime[MAX_N]; 9 bool is_prime[MAX_N + 1]; 10 11 int init(int n) 12 { 13 int p = 0; 14 for (int i =

[Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和". 给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗? 输入 一个偶数N(4 <= N <= 1000000) 输出 输出P和Q.如果有多组解,输出P最小的一组. 样例输入 10 样例输出 3 7 思路 判断和为N两个数是否为素数 代码 1 import java.util.Scanner; 2 3 pu

可以免费自学编程的12个网站

很多人包括一些企业家,和市场营销人员都认为学习编程对一个人走向成功十分有帮助.在过去的一年里,我一直在学习编程.它有助我成为一个更好的创业者,我甚至可以提供一些帮助,当我的团队需要解决一些bug的时候. 现在,如果你想学编程的话,这12个网站可以帮助你,它们都提供了免费的课程供你学习,因此你无需担心费用的问题. 1.Codecademy 其中,Codecademy是最受欢迎的免费编程学习网站之一.事实上,已经有超过2400万人通过这家公司的教育模式学会了编程.Codecademy开设的课程有HT

Java语言程序设计 基础篇 编程练习题 12.7

1 package test.com; 2 3 import java.awt.GridLayout; 4 5 import javax.swing.*; 6 /* 7 * 显示一个包含9个标签的框架,标签有3类图形.圈.叉和空白 8 * 每次运行随机显示 9 */ 10 public class Game extends JFrame { 11 private ImageIcon x = new ImageIcon("d:\\x.jpg"); 12 private ImageIcon

Socket编程实践(12) --UDP编程基础

UDP特点 无连接,面向数据报(基于消息,不会粘包)的数据传输服务; 不可靠(可能会丢包, 乱序, 重复), 但因此一般情况下UDP更加高效; UDP客户/服务器模型 UDP-API使用 #include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *a

泛函编程(12)-数据流-Stream

在前面的章节中我们介绍了List,也讨论了List的数据结构和操作函数.List这个东西从外表看上去挺美,但在现实中使用起来却可能很不实在.为什么?有两方面:其一,我们可以发现所有List的操作都是在内存中进行的,要求List中的所有元素都必须在操作时存在于内存里.如果必须针对大型数据集进行List操作的话就明显不切实际了.其二,List的抽象算法如折叠算法.map, flatMap等是无法中途跳出的,无论如何都一直进行到底:只有通过递归算法在才能在中途停止运算.但递归算法不够抽象,经常出现重复

[Offer收割]编程练习赛12 题目4 : 寻找最大值

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定N个数A1, A2, A3, ... AN,小Ho想从中找到两个数Ai和Aj(i ≠ j)使得乘积Ai × Aj × (Ai AND Aj)最大.其中AND是按位与操作. 小Ho当然知道怎么做.现在他想把这个问题交给你. 输入 第一行一个数T,表示数据组数.(1 <= T <= 10) 对于每一组数据: 第一行一个整数N(1<=N<=100,000) 第二行N个整数A1, A2, A3, ... AN

hihocoder offer收割编程练习赛12 C 矩形分割

思路: 模拟,深搜. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 using namespace std; 5 6 const int dx[4] = { 0, 1, 0, -1 }; 7 const int dy[4] = { -1, 0, 1, 0 }; 8 9 int n, m, cnt = 0; 10 int a[305][305]; 11 bool vis[305][3

hihocoder offer收割编程练习赛12 D 寻找最大值

思路: 可能数据太水了,随便乱搞就过了. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 typedef long long ll; 6 7 int a[100005], n; 8 9 int main() 10 { 11 int t; 12 cin >> t; 13 while (t--) 14 { 15 ll max