为什么这么多Emacser喜欢用clojure/Haskell?

在社区也混刚好过一年了,学到了好多东西,就是在社群知道 rust 的,然后现在深深爱上了 rust 了。不久前,在社群看到很多大神使用 Arch Linux,昨天一用不得了,又爱上了。

一直被为什么这么多人喜欢用 clojure 和 haskell 这个问题困扰了很久。好奇心驱动,事出必有因,为什么这么多人用 clojure 和 haskell?相反,正如大家很少谈论C/C++/Java这些烂大街的语言一样,这些大家都听过用过,故没有引起大家的热情讨论。

在企业应用上要用到吗?什么类型的公司要用到这些语言?

我是个业余的Clojure爱好者,Clojure在天朝好像太冷门了,
我就是感觉s表达式写起来真爽,就是Clojure和ChezScheme我不知道选哪个好,
学Emacs还要学EmacsLisp, 这玩样方言太多了

这叫臭味相投,玩冷门的就爱挑冷门😄

正好今天试验了几个语言的hellio world大小,动态链接,release 模式, macOS, -Os, stripped.

Rust:  257 KB
Nim:     82 KB
Go:     2.1 MB
Zig:     14  KB
OCaml:  202 KB
C:        49 KB
C++:    50 KB
FreePascal:   250 KB

没想到 clang 出来的 hello world 这么大,我记得以前用 windows 时,一个 hello world 2KB 的样子。

Zig 牛逼!

3 个赞

Zip 这么厉害?

想问你,平常拿来干什么?

几个月没用了,
最先是对并发有兴趣,学了一会感觉不错
然后无聊写写4clojure练习,欧拉计划 ,Restful服务
再是想把Clojure作为主要开发语言,然后因为”没有银弹“的原因,暂时放弃了
所以才说我是业余爱好者

相反,是因为用 clojure 和 haskell 的人除了用 emacs 外没啥选择,唯一能比下的也就 vsc,甚至很多功能 vsc 还不如 emacs 丰富。能用来写 C 的 IDE 一堆,甚至想用 emacs 写 java 还很麻烦。

1 个赞

那看起来是时候试一下 clojure 和 haskell 了。

youtube 上有些人用 vim 写 clojure/script,工作流看起来跟 emacs 也没啥区别

试了下,还真的是如此。

我这静态编译也就812kb,我怀疑你没有strip20210105_10h22m17s_grim

c的静态编译strip后716k 下面图放错了 20210105_10h39m12s_grim

你这又不是 macOS。。。

macOS 下 clang 居然不能静态编译 C 源代码。。。

> clang -static -o hello5-static hello5.c
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)

因为 macOS 要求使用系统调用的程序,包括用汇编写的,动态链接到 /usr/lib/libSystem.B.dylib,以保证跨系统版本还能运行

为啥我的hello world只有8384字节

#include <stdio.h>
int main(int argc, char** argv) {
    printf("Hello world!\n");
    return 0;
}

gcc hello.c 

ll a.out 
-rwxrwxr-x 1 gxy gxy 8384 Jan  5 12:18 a.out*

Linux? 难道是 macOS 太垃圾😄️

说的对,我就是因为开始想学haskell 才知道Emacs,从此入坑。 :grinning:
也尝试过配置vim + hie (现在是hls)写haskell,但最后觉得还是emacs 最顺手。

Debian sid, amd64, strip 过了。

rust:     287 KB
nim:       71 KB
go:       1.4 MB
zig:      4.7 KB
ocaml:    290 KB
c:         15 KB
c++:       15 KB
fpc:      187 KB
ghc:      710 KB
gdc:       19 KB

编译命令:

  cargo build --release
  nim c -d:release hello.nim
  go build hello.go
  zig build-exe -O ReleaseSmall hello.zig
  ocamlopt.opt -compact -o hello hello.ml
  gcc -Os -o hello hello.c
  g++ -Os -o hello hello.cpp
  fpc -Os hello.pas
  ghc hello.hs
  gdc -Os -o hello hello.d

Zig 太牛了,Nim 也不错。

因为lisp,所用Clojure。目前在公司里用Clojure写写小应用。

1 个赞

go默认是静态编译的,,不大就怪了,,而且你这个应该是受了某些教程毒害用了fmt才这么大,,

知道 go 是静态编译,就是个对比。

golang 首页的 hello world 就用的 fmt,这毒害了所有 golang 用户吧。。。C 里也是 printf,没用 puts。