虽然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个第三方库的社区贡献者,让这门语言能够快速普及,焕发出了蓬勃的生机。

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

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

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

  1. Julia语言与其他语言的异同

    在编写Julia代码的过程中,会发现与其他语言有不少相似之处,例如Matlab.R或Python,但也有着明显的不同.通过与其他语言的对比,我们可以更加深入地理解Julia,也能够在熟悉其他语言的基础 ...

  2. Julia教程:Julia语言入门

    正如我在" 朱莉娅是什么? ", Julia是一种用于数值计算的免费开源高级,高性能动态编程语言,它将动态语言的开发便利性与已编译的静态类型语言的性能相结合. 它设计用于科学计算, ...

  3. Scala程序设计:Java虚拟机多核编程实战(国内第一本Scala图书)

    Scala程序设计:Java虚拟机多核编程实战(国内第一本Scala图书) 基本信息 作者: (美)Venkat Subramaniam  译者: 郑晔 李剑 丛书名: 图灵程序设计丛书 出版社:人民 ...

  4. 298本R语言书籍免费送!!!

    本人作为R语言爱好者,广泛搜集了关于R语言的书籍,具体包括R语言基础知识.统计学(含生物统计).数据挖掘.计量经济学(时间序列)等,范围广,资料全面,多为可编辑的pdf版本,不少都是各学科领域R语言经 ...

  5. C语言之四书五经—C语言书籍推荐

    转自:http://blog.csdn.net/thefutureisour/article/details/7598775 来说说C语言方面的图书.什么,C语言?有读者奇怪了.没错,这一次的主角就是 ...

  6. c语言自定义函数程序设计,ch3自定义函数设计 C语言 《解析C程序设计》.ppt

    ch3自定义函数设计 C语言 <解析C程序设计> 全局变量--外部变量 在函数外定义的变量 有效范围:从定义变量的位置开始到本源文件结束,及有extern声明的其它源文件 存储类型:缺省e ...

  7. 程序设计工程师c语言,《C语言程序设计》自学百问.doc

    <C语言程序设计>自学百问.doc <C语言程序设计> 自学百问 张克军 前 言 为了便于同学们利用业余时间自学<C语言程序设计>课程,按照教学大纲和信息产业部的程 ...

  8. c语言程序优化设计,C程序设计语言的教学策略优化设计

    摘要:本文围绕提高C语言课堂教学的教学质量,依据教学内容的属性与特点,融合任课教师的教学经验与智慧,通过选择恰当的教学方法,采用合理的教学手段设计了一种教学优化策略,强化了教学方案设计的科学性,保证了 ...

  9. 代写php代码作业,代写phpmyadmin留学生作业、代做SQL语言作业、SQL程序设计作业调试、代做PHP script作业...

    代写phpmyadmin留学生作业.代做SQL语言作业.SQL程序设计作业调试.代做PHP script作业 日期:2019-04-20 01:17 Overview:In this assignme ...

  10. 端口扫描程序设计c语言,主机端口扫描程序设计.doc

    PAGE 主机端口扫描程序设计 摘 要 计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显.端口扫描技术是发现安全问题的重要 ...

最新文章

  1. 会计科目中英文对照表
  2. proto文件支持继承吗_搞懂 Javascript中this 指向及继承原理
  3. h5+ 获取当前位置 并获取当前天气
  4. 人工智能:模型与算法 之 启发式搜索
  5. Python 大规模异步新闻爬虫、google翻译、百度翻译、有道翻译、百度指数
  6. 2020 时代的开发人员关键词:开源和远程办公
  7. 在fstab中使用UUID挂载
  8. android mvp快速创建,学习MVPArms历程之Android Studio快速创建MVPArms项目
  9. Linux学习笔记CentOS6.5(七)--如何开启8080端口供外界访问
  10. java字节数计算_计算一个Java对象占用字节数的方法
  11. 坚持定投3年,我赚了多少钱?
  12. 影响国债收益率的因素
  13. cookie的max age
  14. 手持式超声波气象站旱作节水灌溉
  15. Windows热门的八款绘图软件总有一款是你想要
  16. TensorFlow实现自定义Op
  17. 树莓派 Pico (1):关于 Device is busy or does not respond 解决方法
  18. 4800余网站涉“黄”被封 新浪搜狐腾讯关栏目
  19. kali mysql停止服务器_MySQL主从复制配置详解
  20. 使用 Arduino IDE 对 STM32进行程序开发,安装开发板

热门文章

  1. 安装Alfa Awus 1900 驱动到 Kali Linux
  2. 【评测】阿法埃莎 (Alfa Aesar)化学品目录
  3. 从《天龙八部 3D》到《诛仙》手游,我们如何连续做出成功产品?
  4. 【并发编程】CPU cache结构和缓存一致性(MESI协议)
  5. mosefet驱动电路设计详解
  6. 今天我们来聊聊递归喝汽水问题
  7. [C语言]if语句的常见用法
  8. 查看计算机启动项命令,启动项指令命令有哪些?教你设置电脑Windows开机启动项命令...
  9. mysql 保存富文本的类型_富文本编辑器内容在mysql数据库以什么类型保..._网络编辑_帮考网...
  10. 看美剧《疑犯追踪》,学地道美语 Learn idiomatic American English by watching Tv series Person of Interest