国内第一本Julia语言书籍《Julia语言程序设计》出版了!

虽然Julia官网有不少文档,但总觉得极为不够调理,反复地折腾来折腾去,才好不容易搞明白一些概念和要点。

Julia语言封面

《Julia语言程序设计》是国内第一本介绍Julia语言的书,内容很全面,也极为条理,实践要点也把握的很准确,有些坑,官方文档都没有,书中都交代的很清楚。

该书的介绍如下(链接:https://baike.sogou.com/v177004981.htm):

数据的不断累积、膨胀、延伸也引发了计算领域的深刻变化,而且数据的密集性和分布性也提出了大量的计算密集性和分布式要求。很多工业级的生产场景中,在要求开发高效率、维护低成本、运行高可靠的同时,还需要具备高性能的特点。此间,Julia语言诞生了。

《Julia语言程序设计》[1]是2018年10月机械工业出版社出版的图书,作者是魏坤

Julia的官方文档还算详细,但组织结构并不清晰,概念散乱各处,对新学者并不友好。为此,作者写就此书,将所得分享给大家,希望能以更条理清晰的方式展现Julia的特色,帮助大家更快、更好地熟悉Julia、掌握Julia,也让这门语言能更快更深入的传播。

为了能够让读者通过本书了解、认识、掌握Julia语言的基本概念并能付诸实践,作者反复地对掌握的资料进行了大量的梳理、调整,而且基于真实的运行环境,尽可能地为每个功能点提供相应的示例代码,以求准确、明晰地阐明各个要点。

1基本内容

编辑

      起初,科学家为了避免低效的、简单的、重复的、单调的事情,比如反复的按一套公式计算一个结果等,于是发明了计算机。计算机其实是工业自动化的一个产物,可以说是工业化时代的巅峰代表。而当时人们怎么也不会预想到,计算机的发展,带来了互联网,而互联网导致了信息化时代的到来。如今,在数据蔓延、不断渗透的过程中,智能化已经代表了未来的发展方向。

      与此同时,数据的不断累积、膨胀、延伸也引发了计算领域的深刻变化,而且数据的密集性和分布性也提出了大量的计算密集性和分布式要求。很多工业级的生产场景中,在要求开发高效率、维护低成本、运行高可靠的同时,还需要具备高性能的特点。此间,Julia语言诞生了。

2为何撰写本书

编辑

J      ulia借助于JIT动态解析器及其优秀的设计机制,在一些计算特性上能达到静态语言的性能,这是非常令人惊讶的,也是吸引笔者的地方。笔者在大数据挖掘与机器学习浸淫十数年,面对种类多样、数量巨大、计算逻辑复杂的各种问题,性能与开发效率一直都是极为关注的焦点。毕竟有限的生命不能浪费在低效的事情上。本浅尝而已,但却再无法舍弃,Julia语言的各种特性令笔者兴奋不已。

      几年之前我开始接触Julia,其自然快捷的编写感受,顺畅舒适的体验,与现在广为使用的Python很是相近。但更多的是,为科学与数值计算而生,原生的并发机制与分布式、云计算特性,简洁人性化的语法,还有媲美于静态语言的性能,Julia的所有这些表现都是笔者期待已久的。而今,日常的数据分析和前期数据处理笔者都会首选Julia语言。

      为了能让喜爱的Julia语言能够更快普及,能进入首选的工业级技术架构,笔者不揣浅陋,捉笔从文,写就此书,以求与各位爱好者共同进步。也期冀Julia能成为一个写着简单、读着愉悦、迁移方便、应用广泛、性能强劲的通用编程语言,让我们在开发工作中不在纠结于语言的选择。

      Julia的官方文档还算详细,但组织结构并不清晰,概念散乱各处,对新学者并不友好。为此,笔者愿意以此书为契机,将所得分享给大家,希望能以更条理清晰的方式展现Julia的特色,帮助大家更快、更好地熟悉Julia、掌握Julia,也让这门语言能更快更深入的传播。

3本书的结构

编辑

      Julia语言不仅提供了灵活、多样、简洁的语法,更有着很多符合实际开发需求的强大特性,也充满了很多人性化的设计。它不仅支持各种类型的声明定义、贴近于数学概念的计算规则,还在常见的高维数组、字符串处理、国际化支持、元编程等方面提供了强大的支持。尤其是在并行计算、混合编程等方面更是独具特色,原生地提供了良好的机制,使得这方面的编程工作变得极为快捷便利。

      为了能够让读者通过本书了解、认识、掌握Julia语言的基本概念并能付诸实践,笔者反复地对掌握的资料进行了大量的梳理、调整,而且基于真实的运行环境,尽可能地为每个功能点提供相应的示例代码,以求准确、明晰地阐明各个要点。

      在本书的第1章,会介绍Julia语言的基本情况,同时会重点介绍Julia运行环境的使用方法。为了能够帮助读者在后续的学习中理解Julia语言的特点,本书特意在第2章就编程语言的基础概念进行了简单的介绍,不过对于有经验的读者可做选读内容。

      从第3章起,本书便首先从包括有理数、复数在内的基本数值系统开始详细地介绍Julia语言的基本语法。

      随后的第4章会基于前一章介绍的各种数值类型介绍Julia的各种运算符使用规则。

      在第5章会介绍经典的判断、循环逻辑,还有Julia中较为特别的复合表达式。

      第6章的内容是类型系统,可以说是Julia语言的精髓,包括抽象类型、元类型及复合类型等,都有着Julia自己的特点。我们也能够从该章中深刻地理解,为何在Julia中一切皆对象。另外,本章还会重点介绍类型参数化的内容,这也是Julia灵活适应各种应用场景的基础。本章介绍的元组、字典、集合等结构也是我们开发Julia程序中常会用到的数集

      而第7章所介绍的函数与方法,不但是Julia多态分发机制的基础,也是Julia博采众长的精华。

      在第8章,将介绍Julia之所以成为数值计算语言的核心优势特性——多维数组。数组是科学计算中最为常见的数据结构,但能够以统一的结构表达向量、矩阵、张量甚至高维空间的机制,却是Julia的特色。

      第9章及第10章会介绍开发中经常遇到的字符串与日期处理方法,包括常见的正则表达式、时间计算等。

通过接下来的第11章,我们能够更深刻地认识Julia中一切皆对象的理念,因为通过Symbol与Expr类型的封装,Julia代码也是对象的一部分。而且本章介绍的宏,也是在Julia开发中极为强大的特性。

      第12章会介绍与IO相关的内容,包括流、文件操作、网络通信及序列化等方面的内容。通过本章的学习,我们会再一次为Julia的简洁、高效所折服。

      在第13章中,会介绍Julia代码的组织方式,包括模块、文件以及包。尤其是包的管理,本章进行了较为详尽的阐述。

      Julia原生提供的并行计算特性,是Julia充满魅力的内容之一,会在第14章介绍。在该章中,我们会详尽地阐述协程任务、远程调用及引用,还有数据通道等方面的内容。

      第15章可以作为选读内容,介绍的是Julia与C/C++、Python进行混合编程的基本方法。不过因为运行环境等方面的约束,在学习该章时,如果要通过实例进行实践,建议在Linux或MacOS下进行。

      对Julia编程方面的经验总结或优化建议,会在第16章给出。该章也可作为选读内容,不过笔者仍建议所有的读者能认真学习该章的内容,并通过实例体验,这样才能对Julia语言能够有更为深刻的认识。

      在第17章,本书以机器学习领域内经典的决策树算法为例,陪着读者一起学习了该算法了主要实现过程。在这个实践中,我们对Julia各种语法技巧的使用有了更切实的认知。

      在本书的结尾,会以附录的方式列举出Julia中常见的异常类型、系统变量以及字符串操作函数。而且对可能有用的第三方包进行了简单的介绍,也希望读者能够通过这方面的内容,了解Julia社区的强大力量,习惯性地从社区中获得各种支持。

      另外,在本书撰写时,为了简明、扼要地将概念阐述清楚,在确保不会影响读者了解语言的核心应用要点的情况下,在内容上进行了适当省略缩减。如果涉及到更深入、细节的内容,而本书又未能详尽的,读者可以通过官网查阅更多的资料的进行学习。

4本书的读者

编辑

      本书尽力地从基础逐步深入地介绍Julia语言。但因为Julia语言的设计与实现借鉴了众多先进的理念,所以本书难以进行大而全的阐述,不得已对不少内容进行了节略。所以本书不适合没有任何编程经验的读者,而预期的读者至少了解面向对象、泛型编程与函数式等编程概念。

      由于本书几乎涉及了Julia语言的方方面面,要点颇多,所以也建议读者在通过本书学习Julia语言时,能够按照其中的实例,多多地动手实践,并能在实际的编程工作中选用Julia语言,进行一些开发实践。无论学习哪一种语言,动手是掌握一门语言的唯一捷径。

5致谢

编辑

      首先感谢设计与实现Julia语言的近700位贡献者,为计算机与科学领域提供了这门简洁易用的语言;也感谢Julia近2000个第三方库的社区贡献者,让这门语言能够快速普及,焕发出了蓬勃的生机。           

      此外,感谢上海交通大学副教授潘汉博士在本书校对期间给予的大力支持。

      在本书数月的撰写过程中,妻子冯莹霞和家人的支持与照顾让笔者感动不已,也才让本书能够有机会顺利完成,与读者们相见。感谢她们给予我的一切!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值