我自 2011 年起,就是 Python 的用户与爱好者了。当时,一个好友建议我用 Python 代替 Perl 试试 ,一个崭新的世界向我开放了。在这个世界里可读性比什么都重要,还有一种简明的规则。
站在用户的角度思考问题,与客户深入沟通,找到玛沁网站设计与玛沁网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟主机、企业邮箱。业务覆盖玛沁地区。
即使用了 7 年多的 Python ,我对它的热情还是一如往昔。但是,岁月流逝之下任何人都该去追寻新的机遇与冒险。是时候尝试下别的语言了!
Python 的问题
首先,列举我在 Python 中遇到的一些问题:
打包:这方面是大多数解释型语言都会遇到的问题。打包成一个包括整个 virtualenv 的可安装程序, FPM 之类的工具可以让这个过程非常容易,但是它仍然缺少一个单一二进制程序的优雅。
静态类型:就像一些人从开始使用 C++ 到完全喜爱它,我确实怀念我在 C++ 中用过的类型安全。这与编译时检查密切相关,它确实帮助我们保证我们的代码的质量,甚至在执行之前。
速度:大多数解释型语言的又一个问题。Python 对于许多任务都足够快,但是仍然远远落后于编译型语言。
冗长:我们只有在 Python 3.6 才有 f-strings ,它确实是一个解脱。然而,我们在类和结构中仍然有非常冗长的 self 语法,到处都是 self.var = var ,这可能会在 Python 3.7 的数据类 中部分解决。
隐式私有类成员:我说的私有就是那该死的私有!作为一个前 C++ 程序员,我发现 Python 的私有属性和方法的下划线前缀格式有一点…变态?:‘)
进一步来说,我不确定我真的喜爱 Python 在几个领域的发展方向,尤其是在异步和类型方面。
协程:尽管大受欢迎,Python 中新的异步方法让人感觉非常不友好而且很难掌握。现有代码在非阻塞之前也需要大量的工作。随着越来越多的库开放使用,以及随着我了解且会使用新的库越来越多,我觉得这种情况会随之改善。
类型注解(和 mypy ):说实话,类型注解很受欢迎…如果他们真的在 CPython 做了什么的话。如果没有主 CPython 发布版本主流支持的情况下,使用类型注解作为各式结构体(如数据类)这种想法看起来毫无意义。与此同时,mypy 目前还不是主流,但长远来看,作为一个 Python 类型校验展示了巨大的潜能,特别是在将 --strict 标识开启的时候。
我应该说明我仍然是 Python 的忠实粉丝和支持者,而且认为它仍然是当前***的解释型语言之一;特别是当你考虑到它惊人的生态系统和成熟度。
我在寻找什么
我的出发点是 Python 和 Ruby 。 我经常在需要的地方使用 Ruby ,也非常喜欢它。 Ruby 解决了 Python 所具有的几个问题(适当的私有/受保护的属性,较少冗长的语法等等),但仍然存在性能问题,并且缺少静态类型。
因此,我开始寻找具有以下特点的新语言:
下列语言被排除在外
GO:没有关键字参数、没有异常、没有类、没有泛型以及命名风格的可怕,这些都导致我拒绝了Go(尽管也许这种简单性吸引了很多人)。我实际上花了相当一段时间在 Go 的学习和编码上,我觉得这是最令人沮丧的。在 C 之后,像 C++ 这样的语言已经取得了很多进步,并为我们提供了更大的灵活性,但感觉 Go 似乎让我们回到了 C 语言的时代。
我真正感兴趣并希望在未来进一步研究的语言有:
但是,最终,我决定致力于学习 Crystal !
原因如下:
注意事项
Crystal 是一个非常年轻的语言,仍然没有发布 1.0 版本。它通常会在版本中引入重大更改并且限制库。
不过,我打算仅在我的个人项目中使用这种语言,并且愿意成为早期使用者,因为我觉得这种语言有足够的前景值得使用。
经验
标准库
整个标准库非常容易阅读,我一直在引用它。库似乎也有一定的广泛性,是一个很好的基础教程。
以下是添加数组的示例:
这里是获取文件扩展名的函数:
如果你选择尝试 Crystal ,请确保让它的源码待在你身边; 它非常有价值和有用。
绑定到 C 库
这真的太神奇了!
下面是一个绑定从 Unix 系统获取用户信息的各种函数的例子:
异常处理
类似的异常处理提供给 Puby 和 Python :
写你自己的异常很简单;只需要集成 Exception 类。
导入系统和命名空间
这是来自 Python 的一些调整,但是因为 Ruby 遵循类似 C++ 的方法,把我带回到了 C++ 时代。
C++ 命名空间等同于你可以自定义 Ruby/Crystal 模块。要求任何库将导入它定义的所有项目,因此它总是***的保证了你的整个库包含在模块中,以此来避免命名空间污染。
起初我还有点担心,但我发现它可以从任意数量的文件中轻松建立一个模块。然而,我得承认,找到事物的来源更像是一种挑战。
文章名称:我为什么要从Python转向Crystal语言
链接分享:http://www.shufengxianlan.com/qtweb/news39/186339.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联