注:情报(情報,じょうほう)一词指的是信息技术。
2022 年的春节前后,我在重庆沙坪坝的机厅认识了 J 先生。今年八月我去东京旅行时,J 先生作为向导领着我在秋叶原玩了一天。在我的印象中,他是一个人情练达的、有趣的人。
J 先生在日本完成了本科教育,进入社会后有多段职业经历。毕业后,他进入了一家 Base 在印度的软件开发公司,从事系统集成;数月后转职到一家做人工智能(提供 OCR 等产品)的日本本土企业。回到国内一段时间后,他获得了某 IT 业巨头企业的 Offer;但由于美国的 IT 业裁员潮失去了工作。今年他又获得某供应链公司的工作机会,现在正从事的是情报咨询的工作。
迄今,J 先生已经在日本居住了十余年。
作为一个未出社会的学生,我自然对他在日的经历感到好奇。八月的东京,在秋叶原 GiGO 3 号馆楼下的那家吉野家快餐店内,J 先生将他这十余年在东京的故事向我娓娓道来,我得以一窥日本 IT 业的样貌。
给新朋友的一封信
祝贺您成为一名北京邮电大学计算机系的大学生!
在未来的日子里,您一定会感觉到自己的人生会发生很多变化。学习的方式需要发生变化,生活的方式需要发生变化。在大学里,您的选择变多了:您可以选择积极参与学生工作,也可以选择埋身于理论与科研之中,也可以选择积极参与开发以积累工程经验。
哦,我们还没有进行自我介绍。我们是《一期一会》编辑部,定期为未来的工程师和电子产品发烧友们提供一份刊物。《一期一会》中的文章会带领第一类读者深入浅出地了解现行主流开发技术;阅读本刊,您可以近距离了解工程师们的工作,看看您所学的专业课知识是如何在现实中运作的。《一期一会》同样会摘选现目前仍在北邮就读,已经从北邮毕业的作者的文章。我们尽全力为您提供具有深度思考、有技术纵深的文章,让您能够从中有所获益,让您发现更多“硬核”的北邮人。
如您所见,我们主要为开发者(或者,未来的开发者)们服务。
然而开发者的日子们并不好过。如您所见,我国的宏观经济仍然处于持续低迷的状态,互联网行业也处于萎缩的状态。互联网大厂大规模裁员的新闻已经屡见不鲜,各个公司的 Head Count(招聘新人的名额)数量也在急剧萎缩。软件开发技术不断迭代,开发者们需不断提升自己的“内力”才能在一次一次的技术冲击中存活下来。如果一个开发者不能做到终生学习,不能对整个计算机系统有良好的理解,没有过硬的计算机专业素质,那他很难在软件开发行业走得长远。学历、证书、过往的业绩都不构成开发者的“护城河”。唯有不断学习,才能够在行业内有立足之地。
那学校的课程能够帮助我们多少呢?事实上,我们学院的课程更加倾向于理论教学(重视原理,淡化型号),具体的开发技术还需要同学们自己钻研。计算机组成原理课程会教大家“计算机如何调度内存中的数据”,但并不会告诉你什么是 x86 架构,什么是 arm 架构。操作系统会教授大家什么是信号量,什么是进程、什么是线程,然而 UNIX 系统级编程却需要同学们自己学习。计算机科学毕竟是工科。理论课程解释了计算机如何运算这个世界,然而问题的关键却是我们应该如何做才能利用计算机去改变这个世界。与其坐而论道,不如起而行之。如果您对开发感兴趣,那么现在就动手做吧!
人生充满着无限的可能。我们不应该限定自己的未来的可能性。技术,只是万千人生选择中的一条选择。《一期一会》编辑部在之后的每一期会采访一位北邮人,让他讲讲他独特的故事。同时,《一期一会》编辑部在未来的日子里会举办一场线下沙龙,邀请几位不同的北邮人,让我们的先辈谈一谈自己的人生选择。
前路是曲折的,未来是光明的。希望各位新朋友们都能够在未来真正有所获得,也希望各位新朋友能够多多关注本刊。
由 ChatGPT 帮我写代码所想到的
大二下接近尾声,诸多课设“开发”任务的 Deadline 也开始逼近。java OOP 课程要求写一个聊天系统,我负责写客户端部分。客户端用的是 java swing (一门也许比我年纪还大的技术)进行开发。我翻了翻 Oracle 提供的 java swing 文档 —— 不出意料,我几乎很难看懂上面写的每一个字。于是,我转向 ChatGPT 求助。一开始,我只是向 ChatGPT 问问具体类的成员方法的用处之类的;后来我渐渐发现,只要我输入的 Prompt 足够细致,我可以让 ChatGPT 直接帮我生成一个窗口出来。java OOP 课程还布置了十道需要在 Online Judge 上完成的编程题,ChatGPT 能够直接正确的回答其中的七道题,另外三道题在我稍稍调整后也通过了 Online Judge 的评判。
就在昨天,我看见一位朋友写的数据结构课程设计的前端页面 —— 在我看来,写的挺像模像样的。本人身边的朋友多数不太喜欢做图形界面开发,所以我一直在“查找”身边的做过客户端或者前端开发的同学。经过一番交谈,我发现这位朋友的前端技术也是“速成”出来的 —— 这位朋友花了大约两个月的时间首先了解了 html,css,js 的一些大致开发功能,之后在 “B 站大学” 学习了一下 vue 框架的运作模式(为什么这些机构不愿意多录制一点 React 的教学视频?React 可比 vue 好学多了),最终,在 GPT 4 老师的帮助下,这位同学迅速形成了一套可行的,可用的,界面美观的前端页面。
这使我感到有一些震惊,虽然我本人也是经常依赖 ChatGPT,可是我没想到 ChatGPT 竟然能使一位没有过前端开发经历的人在这么快的时间内做出来这么一套东西。回想起我第一次开发前端,一路上有无数的挫折……我现在还能想起来,2021 年 12 月,那时的我是多么困惑于 React 中的那个玄妙的“副作用”!(拜 B 站缺少 React Hook 的教学视频所赐!)
在没有 GPT 的帮助的日子里,我大约花了半年的时间(2022.1 ~ 2022.7)才大概理解了前端开发的一些要点,并且可以自己写出一些功能没那么复杂的网页(还必须有厉害的人能在旁边提点我几句,不然遇到问题就卡壳了)。之后,我又花了半年时间(2022.9~2023.5),理解了 JavaScript 重要的一些语言特性(单线程异步,原型链等),大致了解了一些“大前端”的开发框架(例如 Electron,React Native),又实际上手做了一两个比较完备的前端项目 —— 到这时,我才大概能够独立的开发出一点可以用的前端页面和基于前端工具链的一些应用。
而现在,有了 ChatGPT,前端开发变得更加的简单了,你都不需要对框架的细节有过多的掌控,你只需要大概的了解这个框架的核心概念(如果你不知道这些核心概念,那你就没办法写 Prompt 了,这个懒 ChatGPT 还暂时不能帮你偷),就可以役使 ChatGPT 帮你生成代码,你再调一调就可以把代码写出来了。ChatGPT,我想,他最大的好处就在于,他把我们从具体工程中的漫天文档中解救出来,让我们不用关心那么多繁冗的细节。在没有 ChatGPT 的时候,开发者形成对这些繁冗细节的良好理解力的最好的方式是积累开发的经验 —— 然而 ChatGPT 的出现正好让一个缺乏具体开发经验的人也能写出来一个不错的项目。
在这篇短文里,我也不想发出类似于“前端已死!”这样的感叹 —— 一来我的资历仍然还是浅薄的很,并不支撑我做如此论断,二来天天呼喊“狼来了”也纯属庸人自扰,徒引人发笑耳。
只是,ChatGPT 强大的功能,让我构想出第三次工业革命时期的一个画面:一位原本自得于娴熟操纵复杂机械的工人,看着一台袖珍的计算机用密密麻麻的电线向机械以一秒钟上万次的频率控制着机器,心中暗忖自己这几十年的“技术”算是白干了。
是谁让你去淄博吃烧烤的?
是谁让你去淄博吃烧烤的?
你打开手机,习惯性的点开了抖音,开始刷起短视频。不知为何,这几天你总是刷到有关淄博烧烤的内容。短视频里,烤串上晶莹的油脂随着炭火的高温融化开来,似乎正隔着屏幕挑动着你的味蕾;网红们将账单怼到镜头前,让你惊呼原来吃一顿烧烤竟然只用花这点钱。你又想起即将到来的五一节——择日不如撞日,干脆五一节去淄博吃烧烤吧。
很显然,淄博烧烤的爆红并不是偶然,而是有关部门联合短视频平台(抖音、快手等)反复营销后带来的必然的结果。从薛之谦在淄博吃烧烤,到哔哩哔哩策划的《人生一串》纪录片拍摄淄博烧烤,再到抖音众网红开始集中在短视频平台上发布淄博烧烤的爆款视频,都是这个营销策略的一部分。
互联网公司的业务扩张:政府文旅行业解决方案
随着我国新冠疫情管控政策的逐步放开,各地的出行政策也渐渐开始调整回疫情开始前的模式,我们也将找回“失去的旅行”。春江水暖鸭先知,资本家们对政策的变动最为敏感。旅游业复苏在即,字节跳动也想要在旅游业的复苏中分一杯羹。字节跳动如何从旅游业中取得利润?这首先要从这家公司推出的“火山引擎”说起。
短视频平台是怎样送你去淄博吃烧烤的?
短视频平台是怎样送你去淄博吃烧烤的?
你打开手机,习惯性的点开了抖音,开始刷起短视频。不知为何,这几天你总是刷到有关淄博烧烤的内容。短视频里,烤串上晶莹的油脂随着炭火的高温融化开来,似乎正隔着屏幕挑动着你的味蕾;网红们将账单怼到镜头前,让你惊呼原来吃一顿烧烤竟然只用花这点钱。你又想起即将到来的五一节——择日不如撞日,干脆五一节去淄博吃烧烤吧。
很显然,淄博烧烤的爆红并不是偶然,而是有关部门联合短视频平台(抖音、快手等)反复营销后带来的必然的结果。从薛之谦在淄博吃烧烤,到哔哩哔哩策划的《人生一串》纪录片拍摄淄博烧烤,再到抖音众网红开始集中在短视频平台上发布淄博烧烤的爆款视频,都是这个营销策略的一部分。
互联网公司的业务扩张:政府文旅行业解决方案
随着我国新冠疫情管控政策的逐步放开,各地的出行政策也渐渐开始调整回疫情开始前的模式,我们也将找回“失去的旅行”。春江水暖鸭先知,资本家们对政策的变动最为敏感。旅游业复苏在即,字节跳动也想要在旅游业的复苏中分一杯羹。字节跳动如何从旅游业中取得利润?这首先要从这家公司推出的“火山引擎”说起。
基础架构的红海中是否还存在一条坦途
本文内容为与两位学长聚餐时的聊天内容的整合
基础架构的红海中是否还存在一条坦途
新的数据库范式
2008 年,Oracle 公司收购了 MySQL 公司。在这一天,也许很多人会认为关系型数据库的技术架构发展历程已经走向了尽头,剩下的都是对现有模型的小修小补。但是互联网公司的快速崛起使得传统的单节点关系型数据库显得有些过时。从数据库层面来看,互联网公司的业务相较于其他行业的业务有以下两个特点:
- 互联网公司每时每刻都在接收和处理大量的数据,他们要提供的服务需要分布式来减轻单台主机的负载,提高可用性。
- 互联网公司对于每天所产生的大量用户数据非常感兴趣——他们希望能够在线分析用户数据(跑模型,分析用户偏好等),然后将分析的结果用于优化推送结果等。
寻求增量:互联网公司的本能
寻求增量:互联网公司的本能
对于互联网公司来说,不进则退,他们总是有让自己不断扩张的趋势——这是股东、投资者逐利、希望看到公司市值上升的心理所导致的。
笔者按:笔者同一位正在一家名为“八比特跳动”的互联网公司上班的学长聚餐,聚餐时聊到了以下内容。
笔者:学长,最近“八比特跳动”的校招情况如何?我听说最近互联网公司的行情都非常不好,Head Count(职位空缺)也非常的少。具体到“八比特跳动”是什么情况呢?
学长:你错啦,“八比特跳动”去年营收了 800 多亿美元,总的来说“八比特跳动”这家公司目前的经营状况还是非常好。目前公司确实裁人裁不少,但是首先裁员是看部门的,你比如最近飞书就裁员裁的非常狠。你知道吗?飞书这一个产品,一共有八千个人在做,这是不是有点过分了。整个推特一共也就八千来人吧,飞书这个项目很明显有人员冗余。
笔者:我听说飞书最近在做商业化,我自己在使用飞书的时候也有这样的体验,原先免费的功能现在付费了。这有助于缓解飞书裁员的现状吗?
为什么我对应用层开发程序员的未来感到悲观
GUI 开发中的事件驱动机制
GUI 开发中的事件驱动机制
前置知识
并发
很显然,您手头正在使用的计算机允许你同时运行好几个应用程序,这归功于您手头正在使用的计算机的操作系统支持“并发”(concurrency)。多个应用程序被抽象为多个进程,然后由操作系统来调度这多个进程。每个进程会被操作系统分配一个时间片,即每次被 CPU 选中来执行当前进程所用的时间。由于 CPU 的频率太高,进程之间的切换并不会让用户感到卡顿,所以给人一种“几个应用程序同时在运行”的感觉。
一个进程可以拥有多个线程(Thread),不同的线程完成不同的任务,一个进程中线程之间的调度同样也是分配时间片、切换线程的模式。
值得强调的是,进程与线程的调度是由操作系统进行的。