#ai #tool
xiaomi https://t.me/LetITFlyW/10089
#web 前端框架的时代, https://nextjs.org/blog/next-14
新单脚本MVVM框架 https://ofajs.com/cn/index.html
wx md预览器 https://editor.mdnice.com/
#china
方脸:细颈瓶是斯大林,而不是玩群众互斗的毛泽东
- 改革开放不是作为,是曲线共产主义经济计划,是放权
小郑:切换字体,并不会让人分不清文明与野蛮
xiaomi https://t.me/LetITFlyW/10089
#web 前端框架的时代, https://nextjs.org/blog/next-14
新单脚本MVVM框架 https://ofajs.com/cn/index.html
wx md预览器 https://editor.mdnice.com/
#china
方脸:细颈瓶是斯大林,而不是玩群众互斗的毛泽东
- 改革开放不是作为,是曲线共产主义经济计划,是放权
小郑:切换字体,并不会让人分不清文明与野蛮
Telegram
LetITFly News
关于 ChatGPT 的一些有用的玩意儿👀
😋第三方前端/客户端(API)
https://github.com/Yidadaa/ChatGPT-Next-Web (Web)
https://github.com/Bin-Huang/chatbox (Windows/macOS/Linux)
https://play.google.com/store/apps/details?id=com.bytemyth.ama&hl=en_US&gl=US (Android)
https://apps.apple.…
😋第三方前端/客户端(API)
https://github.com/Yidadaa/ChatGPT-Next-Web (Web)
https://github.com/Bin-Huang/chatbox (Windows/macOS/Linux)
https://play.google.com/store/apps/details?id=com.bytemyth.ama&hl=en_US&gl=US (Android)
https://apps.apple.…
👎1
duangsuse::Echo
#py 周刊 - 周刊1 无语了, #telegram 上写文怎么破事那么多呢? Ctrl+K 弹框又限bot干🐴呢,哇会做C++ UX真是太厉害了,Markdown编辑都搞不全 //替换/^\d*、//g; $0.innerHTML.replace(/<.?p.*?>/g,"") $$('p').forEach(e=> e.replaceWith(...e.childNodes)) $('[tabindex]:read-write').innerHTML=prompt() 只能在vs和web两个浏览器间,直接CtrlCV文档…
#py 周刊
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
Python 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
@pytest.mark.parametrize
HypothesisPython 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
duangsuse::Echo
#dev #android 面试题 🤔 - 技术上提升最大的一个项目,展开介绍 对比业界同种算法流行和不流行实现、重写自己的任何项目,都比从事GPT都能完成的原型要好 - 为什么选择 Flutter,在业务方面学到了什么 Compose界原神的名气真的太大了,居然能用Navbar,Tab等自带组件,居然能调style! - Java 里重载和重写的区别 在编译期vs运行期确定函数,改方法签名vs改子类值 - 什么是线程安全 避免共享变量(不相交),或使用Atomic/独占锁 避免读写异步 - Service…
#life #statement 对频道、对最近设计稿的一些吐槽
这里本来是用于分享知识的👆,但我又没有多余时间维护它,最终看起来,就像一个草稿箱
我不能像回形针或何同学那样科普,甚至不能学习3b1b和Code Aesthetics 去做我还不愿意涉足的特效,我要传达的太多了…… 我要面对的历史包袱,也太具有迷惑性了
这些知识蛮细节,不一定能立刻写成代码用上。更多是一种解构和自嘲吧。
对编程而言,我是认真的。我不随波逐流,不会因为时代改变就觉得自己被抛弃,去转行
可是,这种执念给我的工程带来了很大的麻烦,比如之前说的EqvJS框架,就因为“新手教程的顺序连贯性,当前理论无法支撑”,而不能去实现简单的signal变量-队列 等模型
比如,因为理论不统一,已经搁了半个月的CLI parser
一个能完全用语文描述的设计模式,尽管归纳整理的过程让人抓狂,相信结果也会是好的 😨
比如,绝句的OOP术语发展历史:
这种反复横跳,最终把
EqvJS的各种功能咋写,不应该是首先考虑的点。 我必须找到它们不可或缺的理由,即便这会让既定设计变来变去…… 或许这才是它们的「护城河」吧!
这里本来是用于分享知识的👆,但我又没有多余时间维护它,最终看起来,就像一个草稿箱
我不能像回形针或何同学那样科普,甚至不能学习3b1b和Code Aesthetics 去做我还不愿意涉足的特效,我要传达的太多了…… 我要面对的历史包袱,也太具有迷惑性了
这些知识蛮细节,不一定能立刻写成代码用上。更多是一种解构和自嘲吧。
对编程而言,我是认真的。我不随波逐流,不会因为时代改变就觉得自己被抛弃,去转行
可是,这种执念给我的工程带来了很大的麻烦,比如之前说的EqvJS框架,就因为“新手教程的顺序连贯性,当前理论无法支撑”,而不能去实现简单的signal变量-队列 等模型
比如,因为理论不统一,已经搁了半个月的CLI parser
fun main(a:Argv)=a.Dict<App>()
enum class Format{html,csv,pdf}
class App(
var input:File,
var output:File,
var fmt:Ln<Format>=Format.CSV,
):CLI("""
i Input file
o Output file name
f Format for output file
""", "") {
fun main() {}
} 一个能完全用语文描述的设计模式,尽管归纳整理的过程让人抓狂,相信结果也会是好的 😨
比如,绝句的OOP术语发展历史:
class|interface|object
thing物|class类|insta例
data物|type遇|^name名 这种反复横跳,最终把
sealed class, data object, enum class 全都整理为type,并让其与 class name 有了不易记混的适用范围EqvJS的各种功能咋写,不应该是首先考虑的点。 我必须找到它们不可或缺的理由,即便这会让既定设计变来变去…… 或许这才是它们的「护城河」吧!
Forwarded from Solidot
李开复的开源模型被发现是对 LLaMA 的重构
2023-11-14 14:57 by 通灵师
李开复创办的 AI 公司零一万物(01.AI)前几天发布了它的开源大模型 Yi-34B,公布的基准测试结果显示虽然模型参数少于其它大模型,但性能更出色。在 Hugging Face 的讨论区,开发者很快指出 Yi-34B 其实是对 Meta 开源大模型 LlaMa 的重构,最明显的变化是改了几个名字。它的开源许可证也没有提及 LlaMa。它也没有公布调试数据,让其他人能复现其基准测试结果。零一万物的估值高达 10 亿美元,已跻身独角兽行列。
https://huggingface.co/01-ai/Yi-34B/discussions/11
#开源
2023-11-14 14:57 by 通灵师
李开复创办的 AI 公司零一万物(01.AI)前几天发布了它的开源大模型 Yi-34B,公布的基准测试结果显示虽然模型参数少于其它大模型,但性能更出色。在 Hugging Face 的讨论区,开发者很快指出 Yi-34B 其实是对 Meta 开源大模型 LlaMa 的重构,最明显的变化是改了几个名字。它的开源许可证也没有提及 LlaMa。它也没有公布调试数据,让其他人能复现其基准测试结果。零一万物的估值高达 10 亿美元,已跻身独角兽行列。
https://huggingface.co/01-ai/Yi-34B/discussions/11
#开源
Forwarded from Solidot
Blender 4.0 释出
2023-11-15 00:01 by 镜中世界
开源 3D 建模软件 Blender 释出了 4.0 版本。主要新特性包括:Cycles 支持光和影的耦合,支持光滑表面的路径引导,支持苹果 Metal API 的 MetalRT 硬件光线追踪,HIP 后端支持 AMD RDNA2 和 RDNA3 APU,默认 UI 字体 Inter,Linux 和 macOS 版最低要求 OpenGL 4.3,等等。更多可浏览发布公告。
https://wiki.blender.org/wiki/Reference/Release_Notes/4.0
#开源
2023-11-15 00:01 by 镜中世界
开源 3D 建模软件 Blender 释出了 4.0 版本。主要新特性包括:Cycles 支持光和影的耦合,支持光滑表面的路径引导,支持苹果 Metal API 的 MetalRT 硬件光线追踪,HIP 后端支持 AMD RDNA2 和 RDNA3 APU,默认 UI 字体 Inter,Linux 和 macOS 版最低要求 OpenGL 4.3,等等。更多可浏览发布公告。
https://wiki.blender.org/wiki/Reference/Release_Notes/4.0
#开源
👍2
duangsuse::Echo
cg($dyn) 生成了 ()=>(a=3,f=(a)=>(a+1),r0=[f(1),a]) ,运行正常 - just(a) - f()=a f just(0)() 那再来一个 with(DSL)$lex=[[], [just, [[a], [f,[[],[a] ]], [f] ]], [f,[0, 0,[just]]], [0, f] //“类型推导”差到不能直接调用 ] ()=>(just=(a)=>(f=()=>(a),f),f=just(0),f()) 是0而不是3 实际上,()=>…
这位 Pixel #PLT #dalao 真是太清醒了,十分 #recommend
http://rigaux.org/language-study/language-study-slides/img13.htm
https://note.sbwcwso.com/
大佬对编程范式的了解很广。我是在 https://blog.vero.site/post/noulith 的codegolf语言看到的 🤔这语言的
ppt显示
这不比as,when is in 强多了,还有新的Fn表达式 🤔
http://rigaux.org/language-study/language-study-slides/img13.htm
https://note.sbwcwso.com/
大佬对编程范式的了解很广。我是在 https://blog.vero.site/post/noulith 的codegolf语言看到的 🤔这语言的
a append= x 统一了列表和"str"的不可变,但我不喜欢ppt显示
class Eq a where
(==): a a -> bool
(!=): a a -> bool
不过绝句早就是关系式编程了,纯函数算什么(这几天新增的更改,SQL JOIN)- Str find(:Str) Idx
[me.iEach]*2 .:
i0\<i, me[i0+i]==s[i], i==n: return i0
- Any`+`(u:Int) me.[Int too]+u
- Int desc me.{0 "zero" 1~10"small" or "{me}"}
这不比as,when is in 强多了,还有新的Fn表达式 🤔
val add: Int.(Int)->Int = {x,y->x+y}
at add Fn.[Int Int A2]:A+B
type 'u'Num
- `==`(:u) YN
type Any
- == (:Any?) YN
- `\=`(:[Any? me], :Any?) YNSbwcwso
mznote
计算机基础知识博客, 个人博客
Forwarded from Solidot
16 岁少年用 Blender 创建的动画赢得了英国 YAY UK 动画奖
2023-11-16 22:19 by 破译滑铁卢
面向英国年轻人的 YAY UK(Young Animator of the Year)公布了 2023 年的获奖者:16 岁的 Euan Garbut 赢得了 15-18 年龄组的最佳动画奖:他在一分钟内描述了未来世界机器人给人类制作食物的过程。主办方称,该奖项由英国动画和 VFX 工作室的专业人士评选,开源 3D 建模软件 Blender 让年轻一代制作出令人称奇的动画成为可能。Euan Garbut 称他用 Blender 制作动画,Davinci Resolve 用于颜色分级 (colour grading)。
https://younganimator.uk/winners
https://younganimator.uk/winner/1699875910225x437970782709919500
https://news.ycombinator.com/item?id=38282166
#科幻
2023-11-16 22:19 by 破译滑铁卢
面向英国年轻人的 YAY UK(Young Animator of the Year)公布了 2023 年的获奖者:16 岁的 Euan Garbut 赢得了 15-18 年龄组的最佳动画奖:他在一分钟内描述了未来世界机器人给人类制作食物的过程。主办方称,该奖项由英国动画和 VFX 工作室的专业人士评选,开源 3D 建模软件 Blender 让年轻一代制作出令人称奇的动画成为可能。Euan Garbut 称他用 Blender 制作动画,Davinci Resolve 用于颜色分级 (colour grading)。
https://younganimator.uk/winners
https://younganimator.uk/winner/1699875910225x437970782709919500
https://news.ycombinator.com/item?id=38282166
#科幻
duangsuse::Echo
#blog #meme 看到易语言还在VB++ 的范式旁徘徊 😅,并且觉得编程语言 是种必须特色和备案的「核心技术」… 我想复刻下这2007年文章的口吻: “绝句.ju”十分钟入门教程 作者:转载必须注明出处 亲爱的朋友,您愿意花十分钟的时间,来了解一门全新的编程语言“绝句.未公开”吗?(搞笑向 btw. 很难想象标准库与ES7接轨,拥有函续、不/可变数据集、流/叠加、双主语的绝句,还能用“合规”的记法支持VB7时代的“正统中文编程”👀 - 起点 将123写到屏幕 100.123:[x] …
绝句的py化已经走向了YAML和Go的形状,已经不像那个满是def和class的语言了
最开始绝句不满Kotlin的两点,就是
但那时反思主要是在中文语意上,而且当时执意给let mut穿小鞋:
随着:块渗透进print、流控、异步…… 开始流行一种
这种有趣的断言,把整个语言分为「式算折词典」5级, as: 就是“一折”能新建变量和ret的算式, 因此尾递归 也能以极其廉价的方式编写
然后,我把易语言用户的猜数字又写了一遍
最开始绝句不满Kotlin的两点,就是
List<T> fun<T> ,. 不对仗,以及一大堆 (private)val 前缀不够简洁但那时反思主要是在中文语意上,而且当时执意给let mut穿小鞋:
量i=0;变数,j初0;常数 PI=3.14
后来const被规范为常量折叠API,变数和量也就区分为 在,i 0。 在这时,j 0 。这时主要的麻烦是 at: a 1; b 2: +1 的最佳实践有:块 时很难看随着:块渗透进print、流控、异步…… 开始流行一种
- Dog bark (say: 'what {sound}'); - f'x' as:(x+1) 的全表达式风格这种有趣的断言,把整个语言分为「式算折词典」5级, as: 就是“一折”能新建变量和ret的算式, 因此尾递归 也能以极其廉价的方式编写
- id'ab'(b=0) as:于是,现在的变量声明,变得符合人类习惯了。而且走向彻底的隐类型--伴随着对OOP的彻底分析,从而知道只有在type接口里,必须能写明类型
now(a+1,b-1) : b==0
a
- 比赛 std.[Int as]:
红队 2
篮队 10
场 Inc.[Str Ln](1):"List<String>"
max(红队,篮队)
- 赋值 做,
a [{0~9} ]!
a加10
这时 0,i;求和
这时i<a.n,
求和 =,+ a[i]
i去右移
说,'{求和} {a}' 然后,我把易语言用户的猜数字又写了一遍
将123写到屏幕
100.123,[x]
(将x)写到屏幕
回
名 'T' `将`(:T) “名记平权”
- [文 将]`写到屏幕` 说,'{它}'
(0~10)(x), “如果(0 < x < 10)”。
(0~~10)(x), “如果(0 < x \< 10)”
(0的右~10的左)(x), “如果(0 \< x \< 10) ,因为数学(>18) 不自然,我换了”
这时,a 1;b 2
变数去换(a、b)
""{a==2, b==1}!
Telegram
duangsues.is_a? SaltedFish
名 启动类
^名
- main
说,'祖国您好!'
将123写到屏幕
100.123,[x]
(将x)写到屏幕
回
名 'T' `将`(:T) “名记平权”
- [文 将]`写到屏幕` 说,'{它}'
典 游戏
- 猜
猜 猜数字().[游戏 也]
猜去猜
(0~10)(x), “如果(0 < x < 10)”。
(0~~10)(x), “如果(0 < x \< 10)”
(0的右~10的左)(x), “如果(0 \< x \< 10) ,因为数学(>18) 不自然,我换了”…
^名
- main
说,'祖国您好!'
将123写到屏幕
100.123,[x]
(将x)写到屏幕
回
名 'T' `将`(:T) “名记平权”
- [文 将]`写到屏幕` 说,'{它}'
典 游戏
- 猜
猜 猜数字().[游戏 也]
猜去猜
(0~10)(x), “如果(0 < x < 10)”。
(0~~10)(x), “如果(0 < x \< 10)”
(0的右~10的左)(x), “如果(0 \< x \< 10) ,因为数学(>18) 不自然,我换了”…
👎1
#statement ☺️绝句是帮我「改良编程」的望远镜,我现在设计的JS变量绑定框架、CLI结构体解析器, 都需要它的理论完善,才能在简洁+完备上打败既有框架
我不会因为太慢,或者貌似很「不切实际」,就暂停完善绝句模型。 在产生任何设计问题前,就该把错误扼杀掉--而不是日复一日上StackOverflow 去堆砌GPT都能写的脚本。
这是我编程的骄傲,是我口中「编程」的定义
也是因为它有太多值得我学习的地方。比如
就比如4天前的Svelte5 大会吧,
说白了,就是js数据模型的缺失,导致jsx和vue那些模板一套一套的。 稍微允许[a,b,1.] 变量入驻数据,给let[]= 匹配加点料,DOM本身就是MVVM框架
#recommend 重构浣熊
https://refactoring.guru/refactoring/when
我不会因为太慢,或者貌似很「不切实际」,就暂停完善绝句模型。 在产生任何设计问题前,就该把错误扼杀掉--而不是日复一日上StackOverflow 去堆砌GPT都能写的脚本。
这是我编程的骄傲,是我口中「编程」的定义
也是因为它有太多值得我学习的地方。比如
(FS .txt/[a]):[str] str("Jack"~~"Rose") 就可以完成编解码+IO 。缺少了 Eq(两换),停留在 fromStr/toStr 的认知,是做不到这个程度的就比如4天前的Svelte5 大会吧,
ww.eg=({width=10,height=20, it},
w1=width.as(x=>x*1),
area=Saw((w1,height)=>w1*height )(w1,height),
)=>
div(
(s,e)=>{Saw(console.log, area); 1..s.then(it({width:20})) },
area
)
都能写得这么规范,要React那些函数式框架有什么用呢?说白了,就是js数据模型的缺失,导致jsx和vue那些模板一套一套的。 稍微允许[a,b,1.] 变量入驻数据,给let[]= 匹配加点料,DOM本身就是MVVM框架
#recommend 重构浣熊
https://refactoring.guru/refactoring/when
refactoring.guru
When to refactor
#PLT #OOP #design
☺️ 绝句的OOP部分完结了。 包含type,name,named 「典-构造器 interface」「名-class」「曾名-加构器」3种概念
type 类似Rust的 enum Either{A(A),B(B)} ,但可以外部扩展
但name呢? 传统的 abstract class有啥用?? 我很想扔掉它们,我在SO上搜了很多,但没人说服我为何「组合优于继承」(甚至这句话居然是OOP专家说的
但它对语意真的没有啥贡献? 只是像Scala那样,简单把同名的 struct+trait 连起来,而且逼你单继承??
我是更看好Rust的impl式多态,包括py的Protcol,虽然很复杂 {}构造器也很乱,但类型的限界都很清楚,不像今日JVM C# 这些接口子类分不清的
---
其实我清楚,class比接口允许「更准的构造顺序..函定性」,它根本就是--js的传函数字典 ,或者说类=可改传的多项函数 接口=dyn字典
如果你写过愚蠢的 android.view.Listener ,会发现它们乐此不疲地把本该叫lambda()-> 的变量搞成override,所谓的设计模式。。。
^type 就是默认参数的另一种写法而已,而 ^type impl? 可以选择不封闭既有值
绝句主张函数与Fn值的统一,但考虑
期望未来能找到更彻底的「解决语法」(想到一个,除了构造器、加构器, 还有
只要我换成
btw. 绝句的结构写起来真是太爽了,可惜表现力比不上纯数据的JS。 希望在词级 算式级 也有更新的发现
btw. 我打算把语言改叫《海经》了,因为这个时代,已经不适合在单句和算式级别,纠结代码怎么写了。 手写的代码都在词乃至类型级别, 而且绝句一开始是为逗句缩进起名, 但如今它的对象和集合模型比缩进有趣一些
☺️ 绝句的OOP部分完结了。 包含type,name,named 「典-构造器 interface」「名-class」「曾名-加构器」3种概念
type 类似Rust的 enum Either{A(A),B(B)} ,但可以外部扩展
type Zoo impl??named 类似inner class,但可以外部扩展
Zebra(:Name,:Age) //<>列方向是cols
Elephant(:Height) //^v行方向是Conds
type Zoo
power Int
Tiger(); Lion() //和enum WithData()一样,生成构造器
type Inc Int{>0} //类型只是N个字典+几个新词的组合
type 'T'Pairs [T T Col2] //所以,没有啥typealias
Point(0,0).Arc(10)
type Any
Point'xy'(_:Int)
named Point.Arc(r:Int) //加构器
- draw 画圆
好吧,写错了,Any的Point构造器,理论上无法继承:type数据间不可以组合但name呢? 传统的 abstract class有啥用?? 我很想扔掉它们,我在SO上搜了很多,但没人说服我为何「组合优于继承」(甚至这句话居然是OOP专家说的
type Geo这个语法是为OOP兼容保留(override fun 啥的太扯了),好像比接口多提供个构造器、protected复用(被Utils取代了)、final等「更准的函定性」
- draw
name Point'xy'(_:Int) Geo
^type
- flip Point
^type impl
- draw 画1px圆
但它对语意真的没有啥贡献? 只是像Scala那样,简单把同名的 struct+trait 连起来,而且逼你单继承??
我是更看好Rust的impl式多态,包括py的Protcol,虽然很复杂 {}构造器也很乱,但类型的限界都很清楚,不像今日JVM C# 这些接口子类分不清的
---
其实我清楚,class比接口允许「更准的构造顺序..函定性」,它根本就是--js的传函数字典 ,或者说类=可改传的多项函数 接口=dyn字典
如果你写过愚蠢的 android.view.Listener ,会发现它们乐此不疲地把本该叫lambda()-> 的变量搞成override,所谓的设计模式。。。
^type 就是默认参数的另一种写法而已,而 ^type impl? 可以选择不封闭既有值
绝句主张函数与Fn值的统一,但考虑
- f'xy' 和 F.[Int Int a2] 本不一致,无法在语法上实现静态-动态类型的交融期望未来能找到更彻底的「解决语法」(想到一个,除了构造器、加构器, 还有
type mv(src, dstFile) 这种「默认参器」只要我换成
name mv(src, dstFile) ,是否就把函数和class联系起来了? 😋btw. 绝句的结构写起来真是太爽了,可惜表现力比不上纯数据的JS。 希望在词级 算式级 也有更新的发现
btw. 我打算把语言改叫《海经》了,因为这个时代,已经不适合在单句和算式级别,纠结代码怎么写了。 手写的代码都在词乃至类型级别, 而且绝句一开始是为逗句缩进起名, 但如今它的对象和集合模型比缩进有趣一些
duangsuse::Echo
#PLT #OOP #design ☺️ 绝句的OOP部分完结了。 包含type,name,named 「典-构造器 interface」「名-class」「曾名-加构器」3种概念 type 类似Rust的 enum Either{A(A),B(B)} ,但可以外部扩展 type Zoo impl?? Zebra(:Name,:Age) //<>列方向是cols Elephant(:Height) //^v行方向是Conds type Zoo power Int Tiger();…
啊,真好。问题解决了 🥰
这样让默认参器基于函数值,OOP和FP,二者就对仗了
name Point'xy'(_:Int) Geo
^type
- flip Point
^type impl
- draw 画1px圆
type draw默认参(x=0,y=0) Geo
- flip 不翻转
- draw 同上
draw :.
-y 10
-flip 翻转函数 这样让默认参器基于函数值,OOP和FP,二者就对仗了
duangsuse::Echo
#sql #ts Prolog 牛逼! 正确的关系式搜索+ 同时实现 parse 和 toStr 😱 #zhihu 灵感来源 e(E) -->{E = [I,Ea,Eb]}, %重写规则, 'eX'为优先级 %利用 链|e1(E) 括住内"*/" e1(Ea), op(I,"+-"), e(Eb); e1(E). e1(E) -->{E = [I,Ea,Eb]}, e2(Ea), op(I," */"), e1(Eb); e2(E). e2(X) --> number(X); ("(",…
#PLT #sql https://zhuanlan.zhihu.com/p/646479383
Z3-SMT 是SAT(可行性求解器)的增强版,即一种sympy 。比Prolog更擅长解数值,甚至能解数独(迫真 ,解决cargo的依赖版本(原神
这API还真挺Pythonic
这种问题貌似Prolog不用限定类型都能解。 定义 Bool(A) 无非是为了重载,那And(bools) 有啥别的语意-即搜索范围呢? 强类型逻辑式编程?好奇怪的搭配
稍微对比几个同类项,都不会这么白象化逻辑式编程
#zhihu 上看到一些逆天观念,C的设计错误:
1:单返回值这个设计可能是受了数学上的f(x,y...)的影响
真的需要多返回值的时候,C就只能用指针搪塞一下了
2:连续不等式
如果 a > b > c, 则……
3: void不是类型
1. Go就支持func (ret, err) 。所以不仅调用难以组合,Err体系也给弄成错的,因为err!=nil时函数不可能有值
2. 写成 (a > b > c) 还是
3. 数学没有void,所以我赞成省略类型=void
还有一些不逆天的C错误:
"\0" 不是数组,argv无法单作为值
赋值是表达式,而且允许
if, while, for 的小括号和大括号,switch break
Z3-SMT 是SAT(可行性求解器)的增强版,即一种sympy 。比Prolog更擅长解数值,甚至能解数独(迫真 ,解决cargo的依赖版本(原神
from z3 import *Z3的API这么复杂,又要add check 又.model的, 不如和Keras做个联动,支持机器学习+逻辑编程好了。 哦,原来 state.add(x==1) 只能执行1次 不是flowgraph啊?
A, B, C = Bools('A B C')
# 创建一个求解器
s = Solver()
# 添加约束条件
s.add(Or(And(A, B), And(Not(A), C)))
# 检查是否存在解
if s.check() == sat:
这API还真挺Pythonic
这种问题貌似Prolog不用限定类型都能解。 定义 Bool(A) 无非是为了重载,那And(bools) 有啥别的语意-即搜索范围呢? 强类型逻辑式编程?好奇怪的搭配
稍微对比几个同类项,都不会这么白象化逻辑式编程
#zhihu 上看到一些逆天观念,C的设计错误:
1:单返回值这个设计可能是受了数学上的f(x,y...)的影响
真的需要多返回值的时候,C就只能用指针搪塞一下了
2:连续不等式
如果 a > b > c, 则……
3: void不是类型
1. Go就支持func (ret, err) 。所以不仅调用难以组合,Err体系也给弄成错的,因为err!=nil时函数不可能有值
2. 写成 (a > b > c) 还是
(a>=x>=c) & (a~b)(x) ? 过了这个村, for(x) 和 x inbounds range 就不可能一致了3. 数学没有void,所以我赞成省略类型=void
还有一些不逆天的C错误:
"\0" 不是数组,argv无法单作为值
赋值是表达式,而且允许
for(;b-c;) c+ --b; b--;//c+b-1, b-=2强制转换语法 (T)+xx、类型前置,这个的影响非常深远,带来的麻烦无穷无尽
if, while, for 的小括号和大括号,switch break
for (i = 1; i <= 10; i++) ,这个 (1~10):[i] 也很毒瘤了知乎专栏
Z3:考公行测轻松应对,排班问题一键解决的"神器"?
上一期我们介绍了 Webassembly,这一期我们将会给大家介绍2015年SIGPLAN 获奖作品Z3求解器,没有了解过的朋友可能会好奇:求解器到底是什么“神器”? 简单一句话总结就是专门为世界上各行各业的复杂问题进行最优…
duangsuse::Echo
#PLT #sql https://zhuanlan.zhihu.com/p/646479383 Z3-SMT 是SAT(可行性求解器)的增强版,即一种sympy 。比Prolog更擅长解数值,甚至能解数独(迫真 ,解决cargo的依赖版本(原神 from z3 import * A, B, C = Bools('A B C') # 创建一个求解器 s = Solver() # 添加约束条件 s.add(Or(And(A, B), And(Not(A), C))) # 检查是否存在解 if s.check()…
还有一些FP的错误 #design »=:
(我们知道,OOP对象 constructor() 就是一个“多方法函数”,等同
- 函数作为值并不稀奇, 相反,滥用 partial(f) 与compose而非this链来隐藏参数,虽等价于 obj.bind.f ,却是一种无序亦无类型的表达习惯。typeclass是和C一样的无心智模型,这种散漫 不值得被崇拜
Python,Rust,Go 都使用了self参数,我觉得rs有 &mut self 和new()模式还算有理由的(当然这比OOP Factory还丑),但那些过于执着理论优雅,忽视程序员阅读时间的设计,还是不可原谅,还不如JS的f.call(this)
- curry 更是一种堪比Builder的,对传参的过度设计。它没有(还不允许有)名字,所以和那些新语言的 tuple(vs. Pair) 一样,造成了()函数或{}结构间的不一致
- FP好像都有「优秀的模块化和列表处理」,但对比py的同类项就会发现那些只是「因祸得福」。FP的所有工程性技巧都建立在这种“妙手”偶得上。正常做法的SEO被他们挤掉了
- 高复用组合、语意化、响应式 并非函数式的专利,而是它们做的功能少,而以为自己更懂原则 😅。它们的定义式还不如Excel
- 纯函数不够对称。基于(可loop化)递归的算式,本可以兼容
- FRP Reactive 和各种State,Signal就是因为缺少「模式作为值」诞生的。 既然公式该作用于「变量」,副作用又指什么?
- 数学不优雅。 数学用x<a,用A=[x y] 处理数据时,没考虑定义-引用双侧的简洁性 (区间,访问链,.)。 这导致加法独立于函数:
- 真正区别了
- (&&print) vs (&) 这特性就像赋值表达式一样,是已被a?:b修正的可读性灾难,而函数式竟把 pass by lazy 当高性能卖点-这还不如Go指针/C宏 的多返回
- 就像0+1,Monad范畴也有自函子id作为(+0) 。而Monad.map就等同于this链,链处理当然好玩—而且无赋值,比如
所以IO Monad 还可以处理异常(级联返回)。但这值得业界学习吗? 比如 xs.map(x=>),fold 的语意该是
Ramda 和各种 immutable data 已经给JS带来很大麻烦了,还被说不严谨 ,其实那些人就是闲
👀
总而言之,但凡在加某种语法或「特殊处理」前,稍微想下使用频率,去与既有语法对比下, 都不会传承这样的问题
数学的问题是过于形式,缺乏读音和链式表达命名, 但某些编程就是太「实在」了,早该分析词频,删掉某些过度设计和常用词了
(我们知道,OOP对象 constructor() 就是一个“多方法函数”,等同
when(arg0, {run:(self)=>overridedFun ,.})的闭包。是这样的「高阶函数」- 函数作为值并不稀奇, 相反,滥用 partial(f) 与compose而非this链来隐藏参数,虽等价于 obj.bind.f ,却是一种无序亦无类型的表达习惯。typeclass是和C一样的无心智模型,这种散漫 不值得被崇拜
Python,Rust,Go 都使用了self参数,我觉得rs有 &mut self 和new()模式还算有理由的(当然这比OOP Factory还丑),但那些过于执着理论优雅,忽视程序员阅读时间的设计,还是不可原谅,还不如JS的f.call(this)
- curry 更是一种堪比Builder的,对传参的过度设计。它没有(还不允许有)名字,所以和那些新语言的 tuple(vs. Pair) 一样,造成了()函数或{}结构间的不一致
- FP好像都有「优秀的模块化和列表处理」,但对比py的同类项就会发现那些只是「因祸得福」。FP的所有工程性技巧都建立在这种“妙手”偶得上。正常做法的SEO被他们挤掉了
- 高复用组合、语意化、响应式 并非函数式的专利,而是它们做的功能少,而以为自己更懂原则 😅。它们的定义式还不如Excel
- 纯函数不够对称。基于(可loop化)递归的算式,本可以兼容
A+1, 1+B, A+B 这些逻辑推导的情况,但FP们空有一堆公式,却连 A=1,1=A 都做不到,还需为 pat match 内定语法!- FRP Reactive 和各种State,Signal就是因为缺少「模式作为值」诞生的。 既然公式该作用于「变量」,副作用又指什么?
全局=值, printed="" 能改变关系算式(引用透明)吗?- 数学不优雅。 数学用x<a,用A=[x y] 处理数据时,没考虑定义-引用双侧的简洁性 (区间,访问链,.)。 这导致加法独立于函数:
1.+(2).+(3) vs +(+(1,2),3)
确实数学不只是符号,但像数形结合时,也只能说Desmos,matlab和GL比手绘好得多、有条理的多,相信对几何图论也是如此- 真正区别了
(+) vs (++) 的是物理性Vector,而Haskell没有哪怕为 List Int 实现加法,却说""+""和1+2 的交换律不一样。所谓「无意义的严谨」 🤓- (&&print) vs (&) 这特性就像赋值表达式一样,是已被a?:b修正的可读性灾难,而函数式竟把 pass by lazy 当高性能卖点-这还不如Go指针/C宏 的多返回
- 就像0+1,Monad范畴也有自函子id作为(+0) 。而Monad.map就等同于this链,链处理当然好玩—而且无赋值,比如
obj?takeIf{}?.let{} 和 yield (yield needFetch).blob() 所以IO Monad 还可以处理异常(级联返回)。但这值得业界学习吗? 比如 xs.map(x=>),fold 的语意该是
xs.as:[x], xs(Sum) 或Eqs(A,B)双转化Ramda 和各种 immutable data 已经给JS带来很大麻烦了,还被说不严谨 ,其实那些人就是闲
👀
总而言之,但凡在加某种语法或「特殊处理」前,稍微想下使用频率,去与既有语法对比下, 都不会传承这样的问题
数学的问题是过于形式,缺乏读音和链式表达命名, 但某些编程就是太「实在」了,早该分析词频,删掉某些过度设计和常用词了
duangsuse::Echo
还有一些FP的错误 #design »=: (我们知道,OOP对象 constructor() 就是一个“多方法函数”,等同 when(arg0, {run:(self)=>overridedFun ,.})的闭包。是这样的「高阶函数」 - 函数作为值并不稀奇, 相反,滥用 partial(f) 与compose而非this链来隐藏参数,虽等价于 obj.bind.f ,却是一种无序亦无类型的表达习惯。typeclass是和C一样的无心智模型,这种散漫 不值得被崇拜 Python,Rust,Go 都…
https://www.zhihu.com/question/631144121/answer/3299457578
#js #java #web #news React系还有一张刁图,让我感叹
目前还只有JS能做str安全注入
当然20年前C#就支持ASP, Razor还支持
原来Javaer才意识到自己只是 CRUD boy??
#js #java #web #news React系还有一张刁图,让我感叹
sql`${}` 居然都能成为稀奇事(虽然之前我想用但没找到包。貌似用BaaS有 prisma 目前还只有JS能做str安全注入
当然20年前C#就支持ASP, Razor还支持
<button formAction="@( () => await Db( $"INSERT INTO Bookmarks VALUES ( {slug} )" ) )" >
前后端同构当然更合理(并不是像PHP那样的伪共用),但不要区分use client和use server更好原来Javaer才意识到自己只是 CRUD boy??
duangsuse::Echo
还有一些FP的错误 #design »=: (我们知道,OOP对象 constructor() 就是一个“多方法函数”,等同 when(arg0, {run:(self)=>overridedFun ,.})的闭包。是这样的「高阶函数」 - 函数作为值并不稀奇, 相反,滥用 partial(f) 与compose而非this链来隐藏参数,虽等价于 obj.bind.f ,却是一种无序亦无类型的表达习惯。typeclass是和C一样的无心智模型,这种散漫 不值得被崇拜 Python,Rust,Go 都…
#PLT #FP https://www.zhihu.com/question/28292740/answer/3297148810
看 moonbit 提到 (Node)Visitor 设计模式,觉得有趣就复述下 👀
Oleg Kiseylov教授等人提出的Tagless Final技术,那就是直接抽象Expr的构造器集,这样函数会随着新子类被覆写,就像 Factory (天哪,FPer在搞事情前都不查重的吗)
其实呢,[Show ExprV] 等于 [Str ExprV],这么写是因为 Haskell 的 class (Exprv t) 是按t重载的,不能手动指定Vshow
static成员实现不是subtype-=元类 时能做到的(这相当于有能+接口的“全局工厂” 比如说.. Gson 的那种)
同样,
但, #Rust 它们就是因为self参数,才这么无结构:
看 moonbit 提到 (Node)Visitor 设计模式,觉得有趣就复述下 👀
Lit(1):Add(me,Lit(2)).eval==3因为OOP无法外部扩展fun,但能加子类,所以请Visitor松耦合(py astor 靠字典,无需样板代码)
?? Expr
Lit'n'
Add'AB'(_:Expr)
- show me .:
Lit: "{n}"
Add: "{A.show}+{B.show}"
- eval me .:
Lit: n.[Num too]
Add: A.eval+B.eval
?? 'R'Expr.Vis按道理 Show(add_3) 比 add_3(Show()) 优雅。但谁叫OOP是靠this @singledispatch 。不过OO的overload+override比Haskell归类性好多了
- as(:Add) R
- as(:Lit) R //因此 Lit'n' 有 - as(f:Expr.Vis) f(me)
me Show() [Str Expr.Vis]
- as(:Lit) "{n}"
me Eval() [Num Expr.Vis]
Oleg Kiseylov教授等人提出的Tagless Final技术,那就是直接抽象Expr的构造器集,这样函数会随着新子类被覆写,就像 Factory (天哪,FPer在搞事情前都不查重的吗)
-'V'(V [Int ExprV]) code1 V.Lit(1)- 添加的Node会被新V1show实现,因为现在Lit们 是能被class的函数
funcs Vshow [Show ExprV]
- Lit(NAME, :Show) show.res
funcs Vpostfix //逆波兰化
?? 'u'ExprV
^name
- Lit(:u)u
- Add'AB'(_:u)u
?? Column
Show(res:Str)
Eval(res:Num)
?? 'u'ExprV1 ExprV
其实呢,[Show ExprV] 等于 [Str ExprV],这么写是因为 Haskell 的 class (Exprv t) 是按t重载的,不能手动指定Vshow
static成员实现不是subtype-=元类 时能做到的(这相当于有能+接口的“全局工厂” 比如说.. Gson 的那种)
同样,
IntArray() fastutil 这些用复制粘贴特化泛型,也是因为 class 不是能被overload的 fun 但, #Rust 它们就是因为self参数,才这么无结构:
trait ExprGADT {
type Expr<T>;
fn lit(i: i32) -> Self::Expr<i32>;
fn neg<N>(A: Self::Expr<N>) -> Self::Expr<N>;
}
魔法并不是免费的,我们要牢记它的意图场景。Zhihu
什么是函数式编程思维? - 知乎
函数式编程现在已经被越来越多地被应用到工业软件中。例如,应用广泛的编程语言Java在迭代到Java 8的时候…
#FP #statement
https://www.zhihu.com/question/596624832/answer/3091106978
Lisp应该不算函数式编程语言吧,它唯一的好处就是在只有C--BCPL的世代支持了GC、选择了非符号的括树风格,用链表取代单步forif。 但是心智模型依然在C99附近徘徊啊,强检查数据之外,其范式并没有比C出众吧?甚至Lua的闭包和yield比圆括号们跨场景对称
范式说到底是「拆分数据上文」的方式啊。 无论FP的单方法函数、高阶组合、tvar窄化推导+GADT,还是OOP的多方法函数、this链、<T>+extends,直到运行时强转的语言……决定软件质量的并非自动测试,并非理论,而是对领域上文的正确列举
所谓PLT,编程语言理论, 就是为了正确理解应用惯用的输入结构、的分层次逻辑。只为尝试茴字的全N种写法 去学咋做翻译器,是种工程吧?
其实在我眼里,Haskell也不能算「定义式编程」的。 反而是numpy,ffmpeg,Matlab,Word这些软件拥有最定义式的、纯度最高的代码接口,而且,它们才是数学和线代的最前沿。把计科理解为数学的人,真的单纯得可爱。
一些连「行前缀重复」都消除不了的语言啊,连细粒度Reactive都改靠lazymemo的纯函数,鼓吹什么point-free (本质是this链) 和类型推导与扩展性,怎么看都不入「定义式+函数式」的大雅之堂吧?
无论类型还是函式、算式的定义语法上,都有2~3种“同样优秀方案”的语言, 能设计成这样的“形式化”语言,被称为优美且自然吗?
何况,基于 trait{} impl{} 与局部(associative type) 式的多态(multi-typed),不能说比子类型和<>类型好, 只能说是毫无使用处,而且在故作高深vs拖泥带水间反复横跳吧
倒不如说,这些语法项的选型,就是因为无用处才能显得混乱。 一旦有了能改变旧套路的灵感,没有什么理论是不能赋予价值的,哪怕只是看个乐子,都比只把跨界复制当作学习融入的人们强
编程语言呢,不是指责顾客挑食或“愚蠢”的 世代都有的聪明人。它是把烂程序、烂写法削好吃的厨师
魔法与应用,是不能对立的。 好的白魔法,终将取代黑箱子里的坏魔法。 像我这样,却会觉得JSPy,rb更懂纯函数DSL, HTML+CSS或JSON就是语法树和宏,Prolog就是更好看的SQL或Excel
编程技能不应该特殊化。打败程序员的,往往不是同行,反而是跨界的新手
https://www.zhihu.com/question/596624832/answer/3091106978
Lisp应该不算函数式编程语言吧,它唯一的好处就是在只有C--BCPL的世代支持了GC、选择了非符号的括树风格,用链表取代单步forif。 但是心智模型依然在C99附近徘徊啊,强检查数据之外,其范式并没有比C出众吧?甚至Lua的闭包和yield比圆括号们跨场景对称
范式说到底是「拆分数据上文」的方式啊。 无论FP的单方法函数、高阶组合、tvar窄化推导+GADT,还是OOP的多方法函数、this链、<T>+extends,直到运行时强转的语言……决定软件质量的并非自动测试,并非理论,而是对领域上文的正确列举
所谓PLT,编程语言理论, 就是为了正确理解应用惯用的输入结构、的分层次逻辑。只为尝试茴字的全N种写法 去学咋做翻译器,是种工程吧?
其实在我眼里,Haskell也不能算「定义式编程」的。 反而是numpy,ffmpeg,Matlab,Word这些软件拥有最定义式的、纯度最高的代码接口,而且,它们才是数学和线代的最前沿。把计科理解为数学的人,真的单纯得可爱。
一些连「行前缀重复」都消除不了的语言啊,连细粒度Reactive都改靠lazymemo的纯函数,鼓吹什么point-free (本质是this链) 和类型推导与扩展性,怎么看都不入「定义式+函数式」的大雅之堂吧?
无论类型还是函式、算式的定义语法上,都有2~3种“同样优秀方案”的语言, 能设计成这样的“形式化”语言,被称为优美且自然吗?
何况,基于 trait{} impl{} 与局部(associative type) 式的多态(multi-typed),不能说比子类型和<>类型好, 只能说是毫无使用处,而且在故作高深vs拖泥带水间反复横跳吧
倒不如说,这些语法项的选型,就是因为无用处才能显得混乱。 一旦有了能改变旧套路的灵感,没有什么理论是不能赋予价值的,哪怕只是看个乐子,都比只把跨界复制当作学习融入的人们强
编程语言呢,不是指责顾客挑食或“愚蠢”的 世代都有的聪明人。它是把烂程序、烂写法削好吃的厨师
魔法与应用,是不能对立的。 好的白魔法,终将取代黑箱子里的坏魔法。 像我这样,却会觉得JSPy,rb更懂纯函数DSL, HTML+CSS或JSON就是语法树和宏,Prolog就是更好看的SQL或Excel
编程技能不应该特殊化。打败程序员的,往往不是同行,反而是跨界的新手
有时也觉得 #CS 界 #IT 界挺魔幻的,60~70年前的矩阵和协程,Lisp式的DSL,到今天还有框架 😔
当然,numpy和 Go func, kotlin.coro, Rust derive宏 已经远不是Fortran,OpenResty那些东西可比拟的
但究其根本,我觉得今天CS+IT的佼佼者,不少lib依然在犯70年前它们先辈的错误。
对于协程这个特性,究竟是DOM,node那样不靠package就包揽一切,还是像Go那样作为噱头,Erlang那样基于Actor,Kt这样与时俱进 最为正统呢?
拿js模拟过……
可能直到AI广泛辅助编程,这些问题都不会有答案
但我清楚AI无法完成写法的形式化,只能从根源上,让用户指定开多大线程池完成多少种Task,这些术语的差异才会伴随着“优化选项”消失
C 那种argc+argvec 的list,也只是术语的差异吗? 恐怕除了样板代码的多少,这些语言作为“app设计器”,也有根本不同
——
在我看来,无论是工业界最流行的语言,还是协程的理论讨论, 都是没有取得统一模型的
换句话说,每个语言有它的优点
这不是一件好事。 一个没有取得共识的工具,会阻碍人的泛化思考,会把编程当成一件机械的编码任务
其实明白编程和数学里的泛用性,又如何呢? 有人为此挣到钱,有人选择删了公开博客, 但到最后随着时代向前,知识也没啥可稀奇的吧
即便如此,我选择把编程视为一种乐趣和创作。
我不需要言辞间的“朴素” “平凡不难”,对于创作者来说,灵感,才能成为汗水里掷地有声的内核。 🕊
当然,numpy和 Go func, kotlin.coro, Rust derive宏 已经远不是Fortran,OpenResty那些东西可比拟的
但究其根本,我觉得今天CS+IT的佼佼者,不少lib依然在犯70年前它们先辈的错误。
对于协程这个特性,究竟是DOM,node那样不靠package就包揽一切,还是像Go那样作为噱头,Erlang那样基于Actor,Kt这样与时俱进 最为正统呢?
拿js模拟过……
总之就当自动传f1(回调),f局部变量在回调中, 所以调用f()能选择何时何处执行我想,大家都被限制在自己的编程生态圈,不去思考这些差异背后的进步方向,可能才是编程之道吧……
Kt的结构化并发确实很有意思,但要谈可用性,JS的手动撤销和自动Dispatch更实在
btw一句,我讲的比较详细,但我对CPS不感兴趣,
主要是为了把回调链表与callstack、OS线程 做类比。确实编译原理和OS是分不开
本群人均素质挺高啊,都知道coroutine是靠CPS
但我更喜欢不纯粹的理论
有时我觉得这些也没必要说的, 我反复思考有好几年了,但它们终究是三句话讲完的程度呢
因为JS最开始是 func*(){} yield Promise,没有async
async是因为JS不能直接把函续交给then,要先yield给执行器(对等协程vs上下级协程)
Ruby的call/cc, C的"setjmp" 就是对等协程,它们符合CPS的刻板印象但不好用…… 总之异步编程反人类
异步编程也可以很美好的,比如 Reactive 就遥遥领先于Java,PHP这一套。 Nextjs应该是新时代的服务端语言
可能直到AI广泛辅助编程,这些问题都不会有答案
但我清楚AI无法完成写法的形式化,只能从根源上,让用户指定开多大线程池完成多少种Task,这些术语的差异才会伴随着“优化选项”消失
C 那种argc+argvec 的list,也只是术语的差异吗? 恐怕除了样板代码的多少,这些语言作为“app设计器”,也有根本不同
——
在我看来,无论是工业界最流行的语言,还是协程的理论讨论, 都是没有取得统一模型的
换句话说,每个语言有它的优点
这不是一件好事。 一个没有取得共识的工具,会阻碍人的泛化思考,会把编程当成一件机械的编码任务
其实明白编程和数学里的泛用性,又如何呢? 有人为此挣到钱,有人选择删了公开博客, 但到最后随着时代向前,知识也没啥可稀奇的吧
即便如此,我选择把编程视为一种乐趣和创作。
我不需要言辞间的“朴素” “平凡不难”,对于创作者来说,灵感,才能成为汗水里掷地有声的内核。 🕊
Telegram
duangsuse::Echo
#FP #math 的一些 #statement
#tool html bookmarklet data:text/html;utf8,<body ContentEditable>
—10÷3=3…1
被大佬建议写成 =(3)3+1 即m=qn+r (r<q)形式的“短除法” ,理由是...没交换律
“理论家布尔巴基有个笑话: 1+2当然是2加1,因为整数对加法构成阿贝尔群”
当然,纠结这些除和除以工程意义不大
ax+i=b; x,i=divmod(b,a) 的可变量元组数学里可是没有。函数只是“…
#tool html bookmarklet data:text/html;utf8,<body ContentEditable>
—10÷3=3…1
被大佬建议写成 =(3)3+1 即m=qn+r (r<q)形式的“短除法” ,理由是...没交换律
“理论家布尔巴基有个笑话: 1+2当然是2加1,因为整数对加法构成阿贝尔群”
当然,纠结这些除和除以工程意义不大
ax+i=b; x,i=divmod(b,a) 的可变量元组数学里可是没有。函数只是“…
#china 方脸
《我的要求不算高》: 中国的韩台梦碎,从10年买房变期待不烂尾
22:00 错失风口,中国无法变成发达国家了
县城经济:为公仆消费者服务,由大城市买单
李老师: 吃个蛋炒饭都被”出“征,生活政治化不可避(悲)
Leonard: 祖国的1千亿空间站 与 14国凑钱出来的空间站
vs 12.3 东航飞港中一个发动机掉叶 #news
^#IT ”开猿节流“ 的风反哺国内,BAT类大厂服务出现宕机,滴滴宕机12h
现在的中文互联网也太抽象了,没想到一首歌都有这种内涵…… 😅
《我的要求不算高》: 中国的韩台梦碎,从10年买房变期待不烂尾
22:00 错失风口,中国无法变成发达国家了
县城经济:为公仆消费者服务,由大城市买单
李老师: 吃个蛋炒饭都被”出“征,生活政治化不可避(悲)
Leonard: 祖国的1千亿空间站 与 14国凑钱出来的空间站
vs 12.3 东航飞港中一个发动机掉叶 #news
^#IT ”开猿节流“ 的风反哺国内,BAT类大厂服务出现宕机,滴滴宕机12h
现在的中文互联网也太抽象了,没想到一首歌都有这种内涵…… 😅
YouTube
方脸说:破碎的中国梦,衰退的中国经济,中国梦无法实现的根本原因是什么?习近平到底犯了什么样的根本性错误?没有政治改革,难有经济成功,并非是一句戏言,中等收入陷阱,韩台道路,发达国家。
00:00 黄渤用一首歌证明了中国梦的破碎
03:34 中国梦,其实就是韩台梦
08:26 不进行政治改革,让我们无法成为韩台那样的发达国家
19:19 习近平的摸着石头过河
21:17 灾难或许是持久的
03:34 中国梦,其实就是韩台梦
08:26 不进行政治改革,让我们无法成为韩台那样的发达国家
19:19 习近平的摸着石头过河
21:17 灾难或许是持久的
Forwarded from 层叠 - The Cascading
Mozilla 发布 llamafile,将 LLM 模型打包为「跨系统」的单文件可执行格式。
llamafile 可以利用 llama.cpp 及 Cosmopolitan Libc 将 LLM 模型(它们通常有至少数 GB 大小)的命令行版本或网页版本打包为单个可执行文件,并可在 Windows、macOS、Linux,甚至 BSD 系系统上执行。
- https://github.com/Mozilla-Ocho/llamafile
- https://hacks.mozilla.org/2023/11/introducing-llamafile/
#Mozilla
llamafile 可以利用 llama.cpp 及 Cosmopolitan Libc 将 LLM 模型(它们通常有至少数 GB 大小)的命令行版本或网页版本打包为单个可执行文件,并可在 Windows、macOS、Linux,甚至 BSD 系系统上执行。
- https://github.com/Mozilla-Ocho/llamafile
- https://hacks.mozilla.org/2023/11/introducing-llamafile/
#Mozilla
GitHub
GitHub - mozilla-ai/llamafile: Distribute and run LLMs with a single file.
Distribute and run LLMs with a single file. Contribute to mozilla-ai/llamafile development by creating an account on GitHub.
#design #plt
最近在整理的编程范式有点让我头疼…… 这个或许对学OOP有帮助吧:
最近在整理的编程范式有点让我头疼…… 这个或许对学OOP有帮助吧:
//行列状多态,就是说一个类型由 字典C=A+B 定义这样的好处是 sealed,data class 都非常简单-甚至多种子类都语法一致,与 #Haskell GADT 不同的是,它支持附带函数与隐式this
?? C A
b1 Str
- b2 Int
//以上声明里没写,故需要另加构造器
?? C
Cat(name:Str, b1="demo")
- b2 b1.(0).Int
Camel(ver=0)
b1 "Hi"
- b2 0
?? 'AB'Columns //泛型,单位状类型如果是新类型,还可以定义Enum甚至表格
Pair(:A,:B)
Triple(:A,:B,:C)
?? 'AB'way2
posL [A mayNO] //val posL: A?
posR [B mayNO]
Left(v:A) ; Right(v:B)
?? RGB学起来有点让人费解(当然这是我设计的), 虽说类型和值都是「构造器」,这样的大杂烩也太奇怪了(但,比用到再单独地学好吧?)
R;G;B
?? 调料
甜 Int ; 咸 Int
- 咸 id==1 or 咸>1
醋 (0 0)
盐 (0 1)