Code Monkey home page Code Monkey logo

htdp2e_exercises_solutions's Introduction

程序设计:学其**

2024 年 7 月份更新

新 1、两个问题

开发同事问我:“你学这个语言有什么用?”

思量一番,才发现:这问题,居然由两个问题组成。

问题一,他人问我,为何要学这语言?

问题二,自己问自己,Ai 来了,为何要继续学“程序设计”?

一生二啊!

新 2、醉翁之意,定不在酒

Racket 这语言确实小众,何时见某一公司招聘,要懂这语言。既如此,为何还要学?

我可以如此答:所学,并非是这门语言,学的是“设计思维”。

其语气,理直气壮。其气势,理性实足。

可惜,未必能“打动”人。

回答这问题,跨界一下,迈入 Ui 设计。

Figma 是一 Ui 设计软件,很强大。例如,Figma 引入了“变量”,即 variables,很多设计系统也称之为 design token ,variables 与 Figma 本身的 style、component 这两功能配合起来,整体效果非常好。

然而,一些 Ui 设计师感觉“变量”难以理解,为什么?

Figma 不同于其他 Ui 设计软件,它是将 Ui 设计与前端紧密绑定在一起。

如果缺乏前端思维,Figma 最大效用,可能就发挥不出来。有部分设计师,缺乏一点编程思维,是以感觉难。

变量是 Figma 最底层的“控制因素”,例如:改动一处变量,所有稿件都得到改变,效率惊人,这不就是“单一控制点”吗?(single point of control)

书中的“开篇:如何编程”(Prologue: How to Program),这一章节,已经告诉你怎么样运用变量了。

现在可以感性回答“问题一”了,为何要学?

因为:学了,会懂,懂的力量强大!

新3、再议 Ai 与 编程

问题一,顺带着牵出问题二:Ai 来了,还需要继续学程序设计吗?

此问题,既是自己问自己,也是之前所遗留。(参看下面 2023 年的文字)

前些日子,学用 Ai 写爬虫,不曾想,把这问题的高度,又给拔高了。

写爬虫的过程,非常简单。

第 1 步:写提示词(prompt)

第 2 步:提示词喂给 Ai,Ai 给出相应代码。

第 3 步:运行代码(含修改 bug )

看起来,不必学编程,忽然间就会写程序了。

果真如此吗?

很快就发现问题。

第1、提示词:若是单独自己写,破绽百出,Ai 给的代码,怎么都运行不起来。(最开始用的别人提示词)

第2、Ai 本身:有时,Ai 看似不停修 bug,bug 量反而不断增加,问题在哪里,一时抓不住。

看大家的讨论,都有类似的状况,“新鲜期”一过,问题一大堆。

归结起来,集中在两个层面:

如果,选用的编程语言不懂,Ai 给你挖的坑,真就不知道怎么样解决。

如果,技术解决方案不懂,写不准提示词,Ai 给出的代码,很可能就乱七八糟。

Ai 效率,确实快得出奇。可是,驾驭好 Ai 的前提,你得懂,否则无法运用好。

所以,请继续学“程序设计” ,至此,问题二,得到回答。

不过,Ai 进化速度飞快,今日之结论,明天即过时。上面的心得,很有可能也马上过时。

路行脚下,期望至千里。

新 4、所用软件及设置

第1、编辑器:VSCodium

首先,用它,提高写代码效率,DrRacket 写代码,效率有点慢。

其次,VSCodium 是 VSCode 的开源版本,可以较好保护自己的隐私,这里看个人选择。

第 2、VSCodium 插件

A、Magic Racket 插件:必须安装。

不安装,VSCodium 无法识别文件,也无法启动 DrRacket,会不停报错。

B、Code Runner 插件:推荐安装。

运行代码用,但有些效果它运行不了,得返回 DrRacket 中。

C、MarKdown All in One 插件:看你选择

可以即时预览写作效果。

D、One Dark Pro 插件:看你选择

编辑器界面美化插件,打造沉浸式环境。

第3、Magic Racket 插件设置

插件设置里,MagicRacket > General:RacketPath 处,把自己安装 DrRacket 的路径填入其中。

同时,DrRacket 的安装路径,最好是加入环境变量,我之前没填写,不停报错,加了之后,就不报错了。

第4、DrRact 安装 racket-langserver

我个人的体会,如果不安装 racket-langserver,vscodium ( vscode 也是如此 ) 会不停提示你不能启动 Magic Racket 。

安装步骤如下:

DrRacket 中,点击 File -> package manager ,打开包管理器。

输入框中输入racket-langserver,点击 install 或 update 进行安装或更新。

注意:有时因为网络问题,可能安装不成功,那就多试几次。

第 5 、书

解题过程中,实在好奇,一门编程语言,该怎么样来设计?

问了问 AI ,推荐了 3 本书,由浅入深,分别是:

入门之选:程序设计语言概念

进阶阅读:程序设计语言:设计与实现

深入研究:类型和程序设计语言

我们一起进步。

新 6、公众号

之前一段时间,把书里解题思路,优先公布至自己的公众号。从今起,公众号和 github 都公布自己的解题思路。

公众号二维码如下,是否关注,随意。

公众号二维码


以下乃 2023 年之文

1、暂时弃学 Python

我是产品经理,不过,我更乐意称自己为:产品设计。这职位擅长的技能,并非代码。现实中,我觉得产品设计人员该学学程序。

一番挑选,最终选了 Python ,一上手,迅即喜欢。

写 “hello world”,C 语言用几行代码,而 Python 只用 1 行,多方便。

可是,继续学习,一个问题纠缠上来:学了 Python ,就可以写好程序吗?

直觉上:不能。

为什么?

2、转向程序设计

身为产品设计,我清楚知道:工具与设计**之间的区别,再傻傻学下去,不可行,是以,一本书从记忆中翻了出来。

作者谈了自己的看法:

现代编程语言的语法大多很繁杂,初学者使用这些语言学习编程会导致花大量的时间在编程语言语法(诸如指针,引用和类型定义)而不是程序设计方法(诸如数据抽象和过程抽象)之上。 程序设计方法 解决了这个问题——它专注于程序设计方法,使得读者无需把大量时间花在编程语言上。这本书还有一个与之配套的教学开发环境 DrScheme ,这个环境会根据读者的程度变换编程语言的深度,使得读者可以始终把注意力集中在程序设计方法上。

我个人很奇怪 程序设计方法 这样的佳作为什么会绝版,而谭浩强C语言这样的垃圾却大行其道——好在是程序设计方法 第二版 已经被免费发布在网上。

这本书便是《How to Design Programs, Second Edition》,如今跟随书本学到了第3章,开始明了:代码语言 ≠ 程序设计

怎么样设计程序,是**。

怎么样运用一门编程语言,是学工具。

3、区别太大

这书读着舒服,对新手很友好,一步步教你,内容也容易理解。但不要给骗了,书中的题目可不是那么容易,有的题目还比较难,作者偷偷挖好了很多坑,等你跳。

我自己的体会:

跟着这书,时时刻刻需要思考,否则真就跟不上。一经思考,个个小知识点,紧紧攥在手里。

而之前学 Python ,人傻傻的,你说什么,我只会做什么,完全不知道该怎么样思考。所以,越学越心虚。

4、何谓**

本书的名称,就是所谓的**。

不过,未跟着学习,纵使识得那几字,也是难解其意,这需要你自己实践。

我会把自己的笔记同步上来,愿你-我共同进步。

5、AI 来了,还要继续学?

似乎 AI 可以代替人工编程,这事我拿捏不准,或者说我也摇摆不定,学,有其理由;不学,也有其理由。

依旧觉得应该学习,理由也很简单:艺多不压身。

附:参考资料

第1、参考书籍

英文版:《How to Design Programs, Second Edition》

中文版:《程序设计方法(第2版)》

另外一参考书籍:《代码大全2(纪念版)》

我只是单纯觉得该书好,稍加阅读,暗觉可以与该书结合起来使用,后面的习题中,也会时不时引用《代码大全 2 》中的内容。

第2、进阶阅读

大名鼎鼎的:《计算机程序的构造和解释(原书第 2 版)》

本书 python 版 :CS61A: Online Textbook

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.