《程序员的呐喊》读书笔记

简介:

   

     在JD的购书通道里,看到了这样的一个书名,果断入手,看了以后果然非同凡响。
     通常程序员在工作开始的几年内,很多习惯就已经定型,甚至影响一辈子了。这个规律不仅适用于程序员,也适应于其他各行各业。所以,前几年好习惯的培养,或者是学校的培养,那是相当重要的。
     人总是喜欢呆在自己的舒适区,做觉得没有难度的事情。问题是,没有难度和挑战,哪来的成长和进步?很多二流程序员,会陷入自己设计的二流架构中,然后一辈子就圈在这样的陷阱中了。多跳出来看一看,多做一点让自己觉得困难的事情。
     很多公司的代码库大的让人吃惊,几百万,几千万甚至上亿行。他们为什么失去了创新和快速变化的能力?因为代码太多了。代码越多, 维护成本就成倍增长,最后甚至没人能搞定它们。设计模式就像盒子, 它虽然能把代码分门别类整理的看似很规整,可是你要知道设计模式也是代码,也一定程度上恶化了问题。
     这让我想起了我设计的框架,我花了两三年时间, 设计了一套C#的代码库,并精心维护它们。但大量的时间花在了维护框架本身,而不是解决问题上。虽然框架设计的还算合理,可是我明显感觉到它就像拖在我身后的麻袋,虽然装了并不好吃的口粮,但却让我越走越慢。仔细看每一个类,好像都有作用,但自己再想想,真的需要那么多吗?它们是财富,也是包袱,越通用的方案,解决特定问题的能力就越弱。如果我真要下定决心重写一遍,代码量会减少到现在的五分之一!
     为什么会有那么多的代码?设计人员难推其责,不断的重复和过度设计,沟通不畅,反复的堆叠,这些自不必说。程序语言本身也有问题。比如Java,什么类都要加上Manager, Builder, Factory...又丑又重,强类型语言难以对复杂的变化做拓展,于是再被设计模式添油加醋,越写越复杂。
     于是,弱类型语言就是个好选择吗?弱类型语言的动态性要强很多,能动态增加方法和属性,但这些自由也意味着一定的代价,比如不安全和一系列动态错误。这仿佛是现实世界的保守派和自由派一样,两派的争论无休无止。保守派意味着详细的文档和规范,严格的建模和测试,SQL,稳定的代码风格,拒绝新特性,各司其职和责任划分。自由派意味着弱类型,脚本风格,NoSQL,先跑起来再说,乐于接受事物,面对变化。很难说哪一派更好,对于银行业这样的系统而言,显然是保守派的天下,而如今世界纷繁多变,抢占市场,快速迭代,到底哪一种思维更好,那就是各位看官们的判断了。总之不论如何,请好好学习一门弱类型的动态语言,比如Ruby或者Python!
     弱类型有缺点,比如编译器的自动支持不够好,但这些问题在未来总归是能解决的,因为有懂编译器的大牛搞定,说起编译器,基本上懂或者写过编译器的人,编程水平超出别人一大截(这不是废话吗)。于是,在简历上写“搞过编译器”,那简直是夜空中闪亮的星!如果我是面试官,一定会首先考虑!你会想这样对不懂编译器的大牛们太不公平了吧,可惜,很多事情就是如此的正相关。算法搞得好的人,他的编程,知识和技巧肯定不会差。编译原理的知识,能够让你解决大量很酷的问题,能重新审视写过的代码和系统。什么能让你彻底精通一门语言,那就是设计它的编译器!
     软件需要哲学家,因为哲学能帮你更好的理解和抽象问题。而数学也非常重要,学生时代的数学课程有问题,它教了太多对程序员太不实用的东西。如果说普通数学和计算机最大的区别,那就是前者是连续的,而后者是离散的。如果你有机会把离散数学,概率论,线性代数都再学一遍,那么编程水平就会又有一个质的飞越,做到可以随手写一个机器学习的算法。
     所以,趁现在还处于黄金年龄,赶紧静下心来学习吧,有无数值得看的书,要学的数学和算法,要研究的编译器(也许我真能学点皮毛呢)。避免眼高手低,去把它写出来。不要问为什么,世界顶级公司的平台,待遇和发展值得你这样去努力!也许被Google这样的公司拒绝并不好受,但要知道很多大神也被拒了两三次之多,无非就是再等半年么,相信我,时间过得很快的!

  坚持做一个傻瓜!

相关文章
|
9天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
8天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
364 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
8天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
353 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
20天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1340 8
|
2天前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
190 136
|
7天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
19天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1440 87
|
7天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。