java程序员入门

背景

Go (通常称为“ Golang”)是一种相当新的编程语言,于2007年首次提出,并于2012年发布了1.0版。它的三位发明者目前都是Google员工,具有令人印象深刻的证书。 肯·汤普森 ( Ken Thompson)是UNIX的传奇之父。 Rob Pike与Thompson一起创建了具有影响力的Plan 9操作系统, Robert Griesemer致力于Java HotSpot虚拟机和Google的V8 JavaScript引擎。

Go的起源源自对C ++变得过于复杂的信念。 这三位发明家想要一种新的系统级语言……同样以C语言为基础,但是增加了现代概念并消除了混乱。 与C一样,Go具有相当紧凑的语言规范,并且与其他现代语言相比,它的标准库很小。 但是,Go引入了以下功能:

  • 静态打字和打字安全
  • 自动垃圾收集
  • 简化使用指针
  • 内置的并发支持
  • 依赖管理系统
  • … 以及更多

最初假定Go的目标受众是C和C ++开发人员。 但是,到目前为止,最热情的是来自Python和其他动态语言社区。 使用Go进行编程在许多方面“感觉”类似于Python……增加了对静态类型的支持,轻松的并发性以及可笑的更快的执行速度。 可以将其描述为“两全其美”的模型,将低级系统语言的效率与高级语言的易用性和表达能力相结合。

是Java程序员吗?

从某种意义上讲,Go背后的动机与Java起源背后的动机相似。 二十年前,Sun Microsystems想要一种比C / C ++更轻松,更宽容的编程语言(例如,垃圾回收,无指针算法!)。 但是它必须功能强大,并具有足以满足大多数任务的丰富标准库。 该行业刚刚进入商业Internet时代,需要强大的网络支持语言来奠定其基础。

我从事Java已有15年以上的专业经验,但我认为Java作为主要语言的地位不会很快改变。 但是,我一直需要使用辅助语言来满足Java的需求。 有时我需要一个快速脚本来解析几GB的脏日志文件。 我需要一个一次性命令行实用程序,用于将信息输入数据库。 我需要轻松部署一些批处理逻辑,以便从cron作业中调用。 我可能需要一个基本的CRUD Web应用程序,只需包装一些数据库表即可轻松输入数据。 等等。

当然,我可以用Java完成所有这些事情。 只是将Java用于许多此类任务就像在需要一把剪刀时使用电锯一样。 与其他语言相比,引导Java程序需要大量的工作。 您必须设置诸如Maven或Gradle之类的构建系统,或者手动管理您的JAR文件依赖项。 部署小型专用实用程序感觉有些过时了。 单独部署JAR意味着在调用JVM时必须管理您的类路径,而将它们捆绑到一个整体的可执行JAR中可能会出现问题。

更重要的是,按照当今的标准,Java是一种非常冗长的语言。 对于大型的面向团队的项目或要长时间维护的复杂逻辑,我并不认为这是缺点。 我发现批评来自新手,他们试图将Java用于简单,短暂,一次性的任务……冗长是不必要的开销。 但是,打开和解析一堆文件确实需要大量令人沮丧的样板代码,如果您仅需一个小实用程序即可。

因此,像许多Java程序员一样,我经常在后兜里使用一两种辅助语言来完成此类辅助任务。 早在90年代后期,就是Perl。 最终转移到了Python,尽管我也花了大量时间在Groovy,Scala和其他人身上。 这些额外的语言不仅填补了Java在特殊任务方面的空白,而且还提高了我的Java开发技能。 当我开始使用异步Java代码时,由于以前使用过JavaScript(其中异步是规范),因此它变得更容易。 如果我已经好几年没有与Scala一起工作了,那么学习Java 8中的新功能构造将是一项艰巨的任务。

在过去的一年中,围棋已经成为我的主要“其他”语言。 它为Java程序员提供了许多巨大的优势:

  • 一种轻巧简洁的编程风格,感觉就像在使用动态语言,但是提供了Java开发人员更喜欢的编译时类型检查。
  • 一个标准库,它足够小以快速学习,但又足够丰富,可以满足您可能通常需要的所有内容。 有针对最常见数据类型(例如XML,JSON,CSV等)的内置解析器。 与JDBC类似的数据库库。 具有出色性能的内置HTTP服务器,用于编写快速的RESTful服务或小型Web应用程序。 等等
  • 轻松的依赖关系管理和部署。 Go程序直接编译为本机可执行文件,并且所有依赖项都静态链接。 没有虚拟机! 您不必担心在目标包装盒上安装了正确版本的Python,也不必担心使用诸如virtualenv之类的工具在自己的包装盒上与多个环境打交道。 只需构建一个exe,然后运行它即可。 尽管可执行文件是特定于平台的,但是Go可以使交叉编译变得容易……例如,在Windows工作站上构建Linux可执行文件。
  • Go可执行文件不仅快速,而且编译器也是如此。 编译器是如此之快,以至于您可以将Go程序作为“脚本”运行,而编译则在后台进行。
  • 一种最简单的模型,可以安全地编写高度并发的代码。

以Java程序员的身份学习Go

尽管Go是一种相当轻便且易于学习的语言,但以Java开发人员的身份使用Go仍存在一些文化挑战。 Go上有几本很棒的书(请参阅底部的参考资料部分),但是它们大多是从C / C ++角度编写的。 他们强调的许多事情对于Java程序员来说都是陌生的,分散了他们的注意力。

同时,有IRC和StackOverflow以及许多其他在线Go社区,但是这些似乎主要由Python开发人员组成。 它们可以对比Go的环境,并为“ pip”和“ virtualenv”构建工具,但是相对于Maven和其他Java概念而言,它们的解释能力不足。

因此,在接下来的几周和几个月中,我计划撰写一系列有关Go的博客文章,从有助于Java程序员的角度介绍不同方面。 我将Go概念与它们的Java相比较。 希望这对Java程序员比阅读对C / C ++或Python读者有用的解释,以及将它们从心理上转化为Java术语更有用。

Go for Java Programmers系列主页上列出了本系列所有文章的链接以及未来计划的主题。 如果您希望在某些时候看到其他主题,请随时与我联系并提出建议。 感谢您的阅读,并享受您的Go体验!

其他资源

  • Go之旅 –一种基于浏览器的交互式教程,用于通过实时代码示例学习Go的基础知识。 展示Go Playground ,这是一种用于在Google App Engine上托管的Web浏览器中测试Go代码的方法。
  • 有效的围棋 –长达50页的语言功能调查,非常适合在完成“围棋”教程后阅读。
  • 如何编写Go代码 –环境主题的简要概述,例如库管理,以及完整Go应用程序的正确目录结构。
  • Go语言编程入门 – Caleb Doxsey撰写的165页的书,可在他的网站上免费获得,并提供象征性收费的Amazon Kindle版本。 我以前已经在此站点上对该书进行了详细的评论 。
  • Go编程语言短语手册 –大卫·奇斯纳尔(David Chisnall)的这本288页的书名奇特,因为它当然不仅仅是“短语书”。 相反,它是该语言的精心编写的中级概述。 它的范围和密度介于Doxsey的上一本书和Summerfield的一本书之间。
  • Go中的编程:创建21世纪的应用程序 – 496页,Mark Summerfield的书是我所推荐的目前市场上最全面的语言基础。 如果您曾经学习过Perl,那么您可以认为Chisnall的书类似于“ 骆驼书 ”,而Summerfield的书类似于“ 骆驼书 ”。

在Go for Java Programmers系列的下一篇文章中,我们将从包,函数和变量开始比较Java和Go之间的基本语法差异。

参考: Go for Java Programmers:我们的JCG合作伙伴 Steve Perkins的介绍,来自steveperkins.net博客。

翻译自: https://www.javacodegeeks.com/2014/03/go-for-java-programmers-introduction.html

java程序员入门

java程序员入门_Java程序员入门:简介相关推荐

  1. java斗图表情_java程序员斗图表情包 为何总是输

    原标题:java程序员斗图表情包 为何总是输 程序员之间的斗图表情包, java真的输惨了! 表情包成了人与人聊天中不可少的分量,陌生人聊天表情包丢出去妥妥的拉近关系变熟络啊(¬_¬) 而且可以用表情 ...

  2. java程序设计入门_Java程序设计从入门到精通

    Java程序设计从入门到精通 编辑 锁定 讨论 上传视频 <Java程序设计从入门到精通>是2018年1月电子工业出版社出版的图书,作者是毛雪涛.丁毓峰. 书    名 Java程序设计从 ...

  3. java语言执行过程_Java程序的运行过程(执行流程)分析

    万事知其然,要知其所以然,所以本节带大家来详细了解一下 Java 程序的执行过程.从<使用记事本编写运行Java程序>一节的案例可以看出,Java 程序的运行必须经过编写.编译和运行 3 ...

  4. java素数的流程图_Java程序流程结构

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

  5. java软件学习网站_Java程序员必看的十大学习网站

    无论是作为资深Java程序员,还是刚刚Java入门的小白,都不可缺少平时学习的网站.以下小编收集了Java程序员必看的十大学习网站,这些网站可以提供信息.以及一些很棒的讲座 , 还能解答一般问题.面试 ...

  6. java 脚本引擎性能_Java SE 6 入门之脚本引擎加大程序性能

    Java SE 6 入门之脚本引擎加大程序性能 Java SE 6较Java SE5有了很大的改进,它的性能更强,而且是专为Vista所设计,这就象征着Java SE 6将是Vista上的最佳抉择.而 ...

  7. java增删改查_Java程序员你真的甘心只做增删改查吗

    各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 最 ...

  8. java后期发展方向_Java程序员的4个职业发展方向,该如何把握黄金5年?

    在Java程序界流行着一种默认的说法叫"黄金5年",意思是说,一个Java程序员从入职的时候算起,前五年我选择直接影响着整个职业生涯的发展方向和薪资走向. 而这5年,也决定了一个程 ...

  9. java有哪些技术_Java程序员,最常用的20%技术有哪些?

    两个月,这让我想到了我当年第一份工作,也是两个月从零学JAVA.当时就买了3本书,强啃了6周.记住一点,时间有限,别听网上很多大牛的,他们说的太杂.你要抓重点,你只要让人家知道,你足够初级开发就可以了 ...

最新文章

  1. mysql select 1
  2. Python 位运算符号
  3. 容器源码分析之HashTable(八)
  4. 全套学习!mysql命令窗口执行sql文件
  5. New Distinct Substrings(后缀数组)
  6. arraylist数据5万占内存_2021年北京市高考报名人数会超过5万吗?大数据告诉您结果...
  7. linux实战清理挖矿病毒kthreaddi
  8. itextsharp创建pdf
  9. 发布一个平滑进度条控件
  10. Java实现HTML代码生成PDF文档
  11. 南京航空航天大学陈松灿教授访谈
  12. 免费wechat机器人教程
  13. 三维地理信息可视化·城市篇 技术解析
  14. 【python】 输出换行字符 “\n“
  15. 网络舆情危及企业经营如何应对?舆情优化十大解决方案!
  16. 连接 mysql 数据库的正确方法是_连接 MySQL 数据库的正确方法是
  17. 我想转行程序员,上个编程培训班,能找到工作吗?我可以自学吗?
  18. 概率论与数理统计--知识点
  19. SQL Server T-SQL数据查询
  20. 社区智能门禁广告,广告流量的新引擎!

热门文章

  1. 【转帖】创意搜狗输入法设计理念等
  2. 机器学习-k折交叉验证法(python实现)
  3. 7-3 随意组合dfs
  4. python去掉人像白边_使用matplotlib而不保存imag时删除图像周围的白色边框
  5. 推荐一个微信小程序商城项目
  6. python制作3d相册代码_Python使用matplotlib绘制3D图形(代码示例)
  7. 10款生成PPT的AI工具实测
  8. Android 判断手机是否有传感器
  9. 为何我们总难听进别人的话
  10. 文件夹访问被拒绝无法删除文件,怎么提高权限删除目标文件夹