首页

元宇宙的基本组成  傻子和骗子 ?
每一个 Actor 由状态(State)、行为(Behavior)和邮箱(MailBox 消息队列)三部分组成
事件驱动,可以简单理解为线程级的消息中间件
Actor 之间不共享数据,只通过消息沟通
Scala之父Martin Odersky 曾表示会在2016简化Scala语言,降低初学者门槛
面向过程 面向对象 函数式 都是扯,现在是面向工资编程
Scala原生的Actor并不是一套完整的并发解决方案,
不适用于生产环境,比如错误恢复,状态持久化等,
在较新版本的Scala类库中,Akka包已经取代了原生的Actor
某投行上了一个项目,成立了一个新team,
把原来用Java写的系统,用Scala和Akka重写了,
以前跑一个小时跑出来的结果,现在需要跑一天多了
Akka是在线程基础上实现调度的,但线程是有限的,所以Akka的Actor中要避免任何阻塞操作,
要么用Akka提供的异步框架,要么通过Future-callback机制,转换成回调模式。
而Goroutine是用户态线程,创建和切换成本比较小,可以把异步的callback机制转换为同步模式
如何解决多个线程同时修改同一块内存的问题,Java的解决方案是使用synchronized关键字,只允许一个线程修改,其他线程等待,但是当并发量上来后影响性能,因为等待的线程无事可做。
Scala的解决方案是使用akka,把所有的修改请求放到一个mailbox里,然后立刻返回,每个对象有一个专属的线程来应用这些修改。
这样通过异步通信的方式解放了调用线程。但是并发量小的时候没有必要。
Nodejs还有Vert.x的方案跟Scala很像,但是不需要建立一个个的actor,而是提供回调函数,在修改完成后执行,这样容易形成callback hell,导致逻辑支离破碎。
于是就出现了coroutine,可以使用同步的代码风格写出异步执行的代码,比如C#的aync/await关键字就属于这一类
Put productivity & creativity back in the hands of developers
让生产力和创造力回到开发者手中
一门编程语言是否好玩有趣,能否激起创作欲,是最关键的,这比语言风格、运行速度、工具支持、社区文化都来得重要
其实最重要的是生态
穷则独善其身,达则兼济天下 
fuck the world if you're rich, otherwise fuck yourself

第一页 上一页 下一页 最后一页