自从ChatGPT在2022年发布以来,LLM模型引领了科技潮流,让人觉得不可思议的是,这已经是将近两年前的事了!但就在这段时间内,还有许多其他软件工程的激动人心进展,可能因为LLM的风头太盛而未得到应有的关注。虽然LLM确实具备革命性,但如今在软件领域,其他令人兴奋的趋势也在悄然崛起。以下是一些非LLM的趋势和创新,且这些领域都充满了增长的潜力。
1. 本地优先软件(Local-First Software)
本地优先软件(Local-first Software)已经存在几十年,但近年其开发体验和功能实现方面都有显著提升。所谓本地优先,就是优先在用户的本地设备上存储和处理数据,而非仅依赖云端服务。React-Query、PouchDB、InstantDB等开发库正帮助实现本地和云端的数据同步,让离线操作更加稳定、低延迟,并带来更出色的用户体验。
特别是冲突解决方案的改进,比如无冲突的CRDT、操作转换OT,以及常用的“最新写入优先”等,让本地优先软件在保持数据一致性方面更具吸引力。通过这些方法,开发者能更轻松地处理设备与服务器端的同步问题,同时提升应用的灵活性。
2. WebAssembly(WASM)
WebAssembly是一种二进制指令格式,能够让代码以接近本地设备的速度直接在浏览器中运行。WASM的出现让浏览器成为功能强大的计算平台,能够独立于服务器执行复杂任务,极大地扩展了前端的可能性。
SQLite数据库在浏览器中的使用是WASM的一个成功应用。通过WASM运行的SQLite,提供了更强大的本地数据存储能力,适合离线功能和数据缓存需求。不仅如此,WebAssembly还提升了代码缓存,使应用加载速度更快,这对开发者来说无疑是巨大的优势。甚至,部分AI模型也能直接在浏览器端运行,比如TensorFlow.js就是一个很好的例子,这为隐私保护和边缘计算提供了更多可能。
3. SQLite的“复兴”
提到数据库,开发者通常会选择MySQL、PostgreSQL(关系型)或MongoDB(NoSQL)。然而,SQLite近年来重新受到关注,且在某些情况下甚至可以作为主力数据库来使用。SQLite的好处是:零延迟、简化的设置、易于多实例复制,并且能处理更大规模的数据库。其开发和测试的便捷性让它非常适合本地存储,尤其是在WASM加持下更是如虎添翼。
Notion就是SQLite的成功案例之一,他们在桌面版应用中使用SQLite进行缓存,加速了页面加载速度,而在Web端用WASM结合SQLite后,进一步减少了页面导航延迟20%。这个趋势在很多开发者间引发了讨论,越来越多本地优先的应用开始选择SQLite作为默认的存储方案。
4. 跨平台技术的进步
跨平台技术在性能、开发体验、可用性等方面取得了显著进展,尤其是React Native和Flutter表现尤为突出。例如,Shopify最近将整个移动应用迁移到React Native平台,达成了86%的代码复用率,并提升了屏幕加载和应用启动的速度。这一举措展示了跨平台的巨大潜力,特别是在提升开发效率和保持性能优化的平衡方面。
然而,纯跨平台方案并不意味着放弃本地开发。实践经验表明,高质量的应用开发仍需依赖本地代码,以确保最佳的用户体验和性能优化。React Native在不断更新的架构和性能优化上走得很远,而Flutter则继续在UI体验和多平台支持上取得新突破。
5. 自动化推理(Automated Reasoning)
自动化推理利用逻辑和数学证明来确保系统行为符合预期。这种方法不同于传统测试,它能验证系统在所有可能情境下的正确性。AWS在其基础架构中广泛应用了自动化推理,通过形式化验证规避了许多潜在问题。比如,他们为IAM建立了正式的规范模型,优化了每秒12亿请求的代码处理速度,提高了50%的性能。
自动化推理的最大优势在于可以提前发现潜在漏洞,尤其是在安全性和可靠性要求高的系统中,形式验证为系统提供了比传统测试更深入的验证方式。
在未来,这些非LLM的技术趋势或许会得到更多关注,也将为软件开发带来更多可能性。各项创新正在快速推进,软件工程师们将能利用这些新工具来进一步提升应用的性能和用户体验。