可以讲下你看到的编程语言的美吗?

9 天前
 nnegier
我是写 java 代码的,感觉后续的一些语法更补不是很让人满意,只是写习惯了,不过也萌生了对那种编程语言的美的思考,表现力强,整洁优美,但我自身接触的语言实在有限,所以想想问问大家,如果可以,也希望可以附上一段你喜欢的代码。

自己提下 python 吧,但只接触过一点,未实际项目,它有一种语法层面的整洁美,那个缩进。
4317 次点击
所在节点    程序员
62 条回复
idrunk
9 天前
个人感觉 Java 比较美,虽然较啰唆,但比较优雅。python 接触不多,觉得它太灵活了,各种语法,比较乱,不优雅。但如果现在二选一,我还是会选 python ,因为觉得实用大于语法优雅。
scp3125
9 天前
```rust
fn read_file(path: &str) -> Result<String, io::Error> {
let mut file = File::open(path)?; // 自动传播错误
let mut contents = String::new();
file.read_to_string(&mut contents)?; // 自动传播错误
Ok(contents)
}
```
rust 的错误处理吧,是我见过的最好的错误处理方式
hefish
9 天前
不可以。讲不出来。自己脑补吧。
iintothewind
9 天前
不可变数据结构, 无副作用函数, 消息驱动在多线程上下文, 异步, 和分布式场景拥有天然优势.

控制流语句, if-else, foreach, unit, try, 不再只是命令, 而是输入输出数据的操作符, 跟函数的作用是一样的.

可惜实现了这些思想的高级语言只能运行在指令式设计的处理器上.

所以底层实现还是内存块, 指针, 加操作指令.
yvescheung
9 天前
Tomohiko Sakamoto 算法,来确定当前日期是星期几:
int dow(int y, int m, int d) {
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}


快速平方根倒数算法:
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;

x2 = number * 0.5F;
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) );

return y;
}
little_cup
9 天前
2025 年了,AI 临门一脚的时代,我不认为程序员需要再把自己的追求放到这种事情上面。

准确说,所有受限于人类脑眼结构的 IO 带宽有限而做的优化都即将失去意义。
注释无误的情况下越啰嗦越好,编译结果一致的前提下代码越平庸越好,框架越大众越好。以往追求的美感,诸如逻辑单元的可复用性、「巧妙」的写法也很快会失去意义,因为几秒钟新写一个成本将远低于维护,不需要维护的代码的「美感」没有价值。
Dropless
9 天前
```csharp
Person person = new Person(); // good old.
var person = new Person(); // cool. 较新一点的 Java 现在也能这样写, 不过 csharp 很早就有了
Person person = new(); // awesome. 我想不到比这更简洁的写法了
```

搞点怪的:
```common lisp
(loop repeat 10
for x = (random 100)
if (evenp x)
collect x into evens
else
collect x into odds
finally (return (values evens odds)))
;; =>
(92 44 58 68)
(95 5 97 43 99 37)
```
其它语言里很基础的循坏结构, 在 common lisp 里硬是弄出了一套 dsl. 有时候我讨厌它, 有时候我又喜欢它.
dcoder
9 天前
Java 还美, 疯了...
omoiFly
9 天前
Y-Combinator
```scheme
(define Y
(λ (le)
((λ (f)
(f f))
(λ (f)
(le (λ (x) ((f f) x)))))))
```
Rust2015
9 天前
最美不过 C#
AEDaydreamer
9 天前
函数式的语法我觉得都挺美
aresyang
9 天前
ocaml 实现的神经网络
dalaoshu25
9 天前
美,当然是 Pascal
netabare
9 天前
vincentWdp
9 天前
erlang/elixir 的 pattern match 是我见过的最优雅的
charles0
9 天前
一个微软研究院的编程语言[Koka]( https://github.com/koka-lang/koka),函数式强类型,用 algebraic effect 管理任意的副作用(可用来实现协程和 async/await 等等),它非常漂亮和统一,在语法和语义上都非常优雅,体现在它有一个非常小的核心语言子集,其它语言构造都可以转化成核心语言; while 只是一个普通的标准库函数;所有圆括号永远先求值而所有花括号都会后续求值零次/一次/多次(作为匿名函数);使用类似 Python 的缩进来省略 C 风格的花括号;和 Rust 一样函数块的最后一个表达式作为返回值;函数式语言标配的类型推导和模式匹配;所有 a.f 都等价于 f(a) ......
这个编程语言属于研究性质,可能对于缺少函数式编程背景的人来说有点难懂,而且资料较少,需要参考它的论文、文档、示例还有测试用例,一个例子如下:
```
// A custom generator effect (which is polymorphic)
effect yield<a>
fun yield(x: a): ()

// Traverse a list and yield the elements (which is also polymorphic) with 'yield' effect
fun traverse(xs: list<a>): yield<a> ()
match xs
Cons(x,xx) -> { yield(x); traverse(xx) }
Nil -> ()

fun main(): console ()
with fun yield(i: int) // Handles the 'yield' effect
println("yielded " ++ i.show) // Printing requires 'console' effect
[1,2,3].traverse
```
charles0
9 天前
@charles0 注意这上面的缩进没了
kenvix
9 天前
你既然写 java 就搞点 kotlin 呗
xgdgsc
9 天前
levelworm
9 天前
可以试试看比较 exotic 的语言,比较说 Forth 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1108327

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX