分类 观点 下的文章

这篇漫画生动的描绘了不同时期不同编程语言的“战争”。

COBOL 是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,功能强大,但缺点是语法繁杂,代码冗长(看它肥的)。而 Java 当时还是个弱小的新生事物。

后来,Java 慢慢发展壮大了,内存吃的越来越多了(都和 COBOL 一样又高又肥了),当 Java 准备再去打一架的时候,COBOL 提醒他注意身后想打他们两个的三个小娃娃(Scala、Kotlin、Go)。

长江后浪推前浪。编程语言的发展很快,不停的会有功能更强的新“轮子”出现在我们眼前。而我们则需了解各个语言的优缺点,与时俱进地看待它们。


via: http://turnoff.us/geek/programming-languages-battle/

作者:Daniel Stori 译者:ItsLucas 点评:ItsLucas 校对:Bestony 合成:Bestony

本文由 LCTT 原创编译,Linux中国 荣誉推出

最近我们刚为开设了一个新的“科学类”的文章分类。其中发表的最新一篇文章名为:开源是怎样影响科学的。在这篇文章中我们主要讨论了 NASA 的积极努力,这些努力包括他们通过开源实践来促进科学研究的积极作用。

NASA 是怎样使用开源手段促进科学研究的

NASA 将他们的整个研究库对整个公共领域开放,这是一项壮举

没错!每个人都能访问他们的整个研究库,并能从他们的研究中获益。

他们现已开放的资料可以大致分为以下三类:

  • 开源 NASA
  • 开放 API
  • 开放数据

1、开源 NASA

这里有一份 GitHub 的联合创始人之一和执行总裁 Chris Wanstrath 的采访,他向我们介绍道,一切都是从很多年前开始的。

该项目名为 “code.nasa.gov”,截至本文发表为止,NASA 已经通过 GitHub 开源了 365 个科学软件(LCTT 译注:本文原文发表于 2018/3/28,截止至本译文发布,已经有 454 个项目了)。对于一位热爱程序的开发者来说,即使一天研究一个软件,想把 NASA 的这些软件全部研究过来也要整整一年的时间。

即使你不是一位开发者,你也可以在这个门户网站浏览这个壮观的软件合集。

其中就有阿波罗 11 号的制导计算机的源代码。阿波罗 11 号空间飞行器首次将两名人类带上月球,分别是 Neil ArmstrongEdwin Aldrin 。如果你对 Edwin Aldrin 感兴趣,可以点击这里了解更多。

NASA 开源代码促进会使用的开源代码许可

它们采用了几种开源许可证,其分类如下:

2、开放 API

开放 API 在推行开放科学中起到了很大作用。与开源促进会类似,对于 API,也有一个 开放 API 促进会。下面这张示意图可以告诉你 API 是怎样将应用程序和它的开发者连接起来的。

记得点击这个链接看看。链接内的文章使用了简单易懂的方法解读了 API ,文末总结了五大要点。

这会让你感受到专有 API 和开放 API 会有多么大的不同。

NASA 的 Open API 主要针对应用程序开发者,旨在显著改善数据的可访问性,也包括图片内容在内。该网站有一个实时编辑器,可供你调用每日天文一图(APOD) 的 API。

3、开放数据

我们发布的第一篇开放科学的文章中,我们在“开放科学”段落下提到的三个国家 —— 法国、印度和美国的多种开放数据形式。NASA 有着类似的想法和行为。这种重要的意识形态已经被多个国家所接受。

NASA 的开放数据门户致力于开放,拥有不断增长的可供大众自由使用的开放数据。将数据集纳入到这个数据集对于任何研究活动来说都是必要且重要的。NASA 还在他们的门户网站上征集各方的数据需求,以一同收录在他们的数据库中。这一举措不仅是领先的、创新的,还顺应了数据科学AI 和深度学习的趋势。

下面的视频讲的是学者和学生们是怎样通过大量研究得出对数据科学的定义的。这个过程十分的激动人心。瑞尔森大学罗杰斯商学院的 Murtaza Haider 教授在视频结尾中提到了开源的出现对数据科学的改变,尤其让是旧有的闭源方式逐渐变得开放。而这也确实成为了现实。

现在任何人都能在 NASA 上征集数据。正如前面的视频中所说,NASA 的举措很大程度上与征集和分析优化数据有关。

你只需要免费注册即可。考虑到论坛上的公开讨论以及数据集在可能存在的每一类分析领域中的重要性,这一举措在未来会有非常积极的影响,对数据的统计分析当然也会大幅进展。在之后的文章中我们还会具体讨论这些细节,还有它们和开源模式之间的相关性。

以上就是对 NASA 开放科学模式的一些探索成就,希望您能继续关注我们接下来的相关文章!


via: https://itsfoss.com/nasa-open-science/

作者:Avimanyu Bandyopadhyay 选题:lujun9972 译者:Valoniakim 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一个学生对现代教育并不那么悲观的观点。

最近有些人和我说现代教育会是什么样子,我回答说:就像过去一百年一样。我们为什么会对我们的教育体系保持悲观态度呢?

这不是一个悲观的观点,而是一个务实的观点。任何花时间在学校的人都会有同样的感觉,我们对教导年轻人的方式固执地抵制变革。随着美国学校开始新的一年,大多数学生回到了桌子排成一排排的教室。教学环境主要以教师为中心,学生的进步由卡内基单位和 A-F 评分来衡量,而合作通常被认为是作弊。

我们从哪能够找到证据指出这种工业化模式正在产生所预想的结果?每个孩子都得到个人关注,以培养对学习的热爱,并发展出当今创新经济中茁壮成长所需的技能,我们很可能对现状非常满意。 但是,任何真实客观地看待当前的指标都表明要从基本开始改变。

但我的观点并非悲观。 事实上,非常乐观。

尽管我们可以很容易的阐述现代教育的问题所在,但我也知道一个例子,教育利益相关者愿意走出那些舒适的环境,并挑战这个对变革无动于衷的体系。教师要与同龄人进行更多的合作,并采取更多方式公开透明的对原型创意进行展示,从而为学生带来真正的创新 —— 而不是通过技术重新包装传统方法。管理员通过以社区为中心,基于项目的学习,实现更深入、更紧密的学习实际的应用程序 —— 不仅仅是在孤立的教室中“做项目”。 父母们想把学习的快乐回归到学校的文化,这些文化因强调考试而受到损害。

所有文化变革向来都不容易,特别是在面对任何考试成绩下降(无论统计意义如何重要)都面临政治反弹的环境中,因此人们不愿意承担风险。 那么为什么我乐观地认为我们正在接近一个临界点,我们所需要的变化确实可以克服长期挫败它们的惯性呢?

因为在我们的现代时代,社会中还有其他东西在以前没有出现过:开放的精神,由数字技术催化。

想一想:如果你需要为即将到来的法国旅行学习基本的法语,你该怎么办? 您可以在当地社区学院注册一门课程或者从图书馆借书,但很有可能,您会用免费在线视频并了解旅行所需的基本知识。人类历史上从未有过免费的按需学习。事实上,人们可以参加麻省理工学院关于“应用数学的专题:线性代数和变异微积分的免费在线课程。报名参加吧!

为什么麻省理工学院、斯坦福大学和哈佛大学等学校提供免费课程? 为什么人们和公司愿意公开分享曾经严格控制的知识产权?为什么全球各地的人们都愿意花时间,无偿地帮助公民科学项目呢?

David Price 在他那本很棒的书《开放:我们将如何在未来工作和学习》中,清楚地描述了非正式的社交学习如何成为新的学习规范,尤其是习惯于能够及时获取他们需要的知识学习的年轻人。通过一系列案例研究,Price 清楚地描绘了当传统制度不适应这种新现实并因此变得越来越不相关时会发生什么。这是缺失的元素,它能让众包产生积极的颠覆性的影响。

Price 指出(以及人们现在对基层的要求)正是一场开放的运动,人们认识到开放式合作和自由交换思想已经破坏了从音乐到软件再到出版的生态系统。 而且,除了任何自上而下推动的“改革”之外,这种对开放性的期望有可能从根本上改变长期以来一直抵制变革的教育体系。事实上,开放精神的标志之一是,它期望知识的透明和公平民主化,造福所有人。那么,对于这样一种精神而言,还有什么生态系统能比试图让年轻人做好准备,继承这个世界、让这个世界变得更好呢?

当然,也有另一种悲观的声音说,我早期关于教育未来的预测可能确实是短期未来的教育状况。但我也非常乐观地认为,这种说法将被证明是错误的。 我知道我和许多其他志趣相投的教育工作者每天都在努力证明这是错误的。 当我们开始帮助我们的学校转变为开放式组织 —— 从过时的传统模式过渡到更开放、灵活,响应每个学生和他们服务的社区需要的时候,你会加入我吗?

这是适合现代时代的真正教育模式。


via: https://opensource.com/open-organization/18/9/modern-education-open-education

作者:Ben Owens 选题:lujun9972 译者:hkurj 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

为什么在工程中混合角色对用户更好的三个原因。

大多数开源社区没有很多正式的角色。当然,也有一些固定人员帮助处理系统管理员任务、测试、编写文档以及翻译或开发代码。但开源社区的人员通常在不同的角色之间流动,往往同时履行几个角色的职责。

相反,大多数传统公司的团队成员都定义了角色,例如,负责文档、技术支持、质量检验和其他领域。

为什么开源社区采取共享角色的方法,更重要的是,这种协作方式如何影响产品和客户?

Nextcloud 采用了这种社区式的混合角色的做法,我们看到了我们的客户和用户受益颇多。

1、更好的产品测试

每个测试人员都会说测试是一项困难的工作。你需要了解工程师开发的产品,并且需要设计测试案例、执行测试案例并将结果返回给开发人员。完成该过程后,开发人员将进行更改,然后重复该过程,根据需要来回进行多次,直到任务完成。

在社区中,贡献者通常会对他们开发的项目负责,因此他们会对这些项目进行广泛的测试和记录,然后再将其交给用户。贴近项目的用户通常会与开发人员协作,帮助测试、翻译和编写文档。这将创建一个更紧密、更快的反馈循环,从而加快开发速度并提高质量。

当开发人员不断面对他们的工作结果时,会鼓励他们以最大限度地减少测试和调试的方式去书写。自动化测试是开发中的一个重要元素,反馈循环可以确保正确地完成操作:开发人员主观能动的来实现自动化 —— 而不过于简化也不过于复杂。当然,他们可能希望别人做更多的测试或自动化的测试,但当测试是正确的选择时,他们就会这样做。此外,他们还审查对方的代码,因为他们知道问题往往会在以后让他们付出代价。

因此,虽然我不认为放弃专用测试人员更好,但在没有社区志愿者进行测试的项目中,测试人员应该是开发人员,并密切嵌入到开发团队中。结果如何?客户得到的产品是由 100% 有动机的人测试和开发的,以确保它是稳定和可靠的。

2、开发和客户需求之间的密切协作

要使产品开发与客户需求保持一致是非常困难的。每个客户都有自己独特的需求,有长期和短期的因素需要考虑 —— 当然,作为一家公司,你对你的发展方向有想法。你如何整合所有这些想法和愿景?

公司通常会创建与工程和产品开发分开的角色,如产品管理、支持、质量检测等。这背后的想法是,人们在专攻的时候做得最好,工程师不应该为测试或支持等 “简单” 的任务而烦恼。

实际上,这种角色分离是一项削减成本的措施。它使管理层能够进行微观管理,并更能掌握全局,因为他们可以简单地进行产品管理,例如,确定路线图项目的优先次序。(它还创建了更多的会议!)

另一方面,在社区,“决定权在工作者手上”。开发人员通常也是用户(或由用户支付报酬),因此他们自然地与用户的需求保持一致。当用户帮助进行测试时(如上所述),开发人员会不断地与他们合作,因此双方都完全了解什么是可行的,什么是需要的。

这种开放的合作方式使用户和项目紧密协作。在没有管理层干涉和指手画脚的情况下,用户最迫切的需求可以迅速得到满足,因为工程师已经非常了解这些需求。

在 nextcloud 中,客户永远不需要解释两次,也不需要依靠初级支持团队成员将问题准确地传达给工程师。我们的工程师根据客户的实际需求不断调整他们的优先级。同时,基于对客户的深入了解,合作制定长期目标。

3、最佳支持

与专有的或 开放源核心 open core 的供应商不同,开源供应商有强大的动力提供尽可能最好的支持:这是与其他公司在其生态系统中的关键区别。

为什么项目背后的推动者(比如 CollaboraLibreOffice 背后,The Qt CompanyQt 背后,或者 Red HatRHEL 背后)是客户支持的最佳来源呢?

当然是直接接触工程师。这些公司并不阻断来自工程团队的支持,而是为客户提供了获得工程师专业知识的机会。这有助于确保客户始终尽快获得最佳答案。虽然一些工程师可能比其他人在支持上花费更多的时间,但整个工程团队在客户成功方面发挥着作用。专有供应商可能会为客户提供一个专门的现场工程师,费用相当高,但一个开源公司,如 OpenNMS 可以在您的支持合同中提供相同级别的服务,即使您不是财富 500 强客户也是如此。

还有一个好处,那就是与测试和客户协作有关:共享角色可确保工程师每天处理客户问题和愿望,从而促使他们快速解决最常见的问题。他们还倾向于构建额外的工具和功能,以满足客户预期。

简单地说,将质量检测、支持、产品管理和其他工程角色合并为一个团队,可确保优秀开发人员的三大优点 —— 从简、精益求精、高度自我要求 laziness,impatience,and hubris —— 与客户紧密保持一致。


via: https://opensource.com/article/18/8/mixing-roles-engineering

作者:Jos Poortvliet 选题:lujun9972 译者:lixinyuxx 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们最近采访了Akash Angle 来了解他如何使用 Fedora。这是 Fedora Magazine 上 Fedora 系列的一部分。该系列介绍 Fedora 用户以及他们如何使用 Fedora 完成工作。请通过反馈表单与我们联系表达你对成为受访者的兴趣。

Akash Angle 是谁?

Akash 是一位不久前抛弃 Windows 的 Linux 用户。作为一名过去 9 年的狂热 Fedora 用户,他已经尝试了几乎所有的 Fedora 定制版和桌面环境来完成他的日常任务。是一位校友给他介绍了 Fedora。

使用什么硬件?

Akash 在工作时使用联想 B490。它配备了英特尔酷睿 i3-3310 处理器和 240GB 金士顿 SSD。Akash 说:“这台笔记本电脑非常适合一些日常任务,如上网、写博客,以及一些照片编辑和视频编辑。虽然不是专业的笔记本电脑,而且规格并不是那么高端,但它完美地完成了工作。“

他使用一个入门级的罗技无线鼠标,并希望能有一个机械键盘。他的 PC 是一台定制桌面电脑,拥有最新的第 7 代 Intel i5 7400 处理器和 8GB Corsair Vengeance 内存。

使用什么软件?

Akash 是 GNOME 3 桌面环境的粉丝。他喜欢该操作系统为完成基本任务而加入的华丽功能。

出于实际原因,他更喜欢全新安来升级到最新 Fedora 版本。他认为 Fedora 29 可以说是最好的工作站。Akash 说这种说法得到了各种科技传播网站和开源新闻网站评论的支持。

为了播放视频,他的首选是打包为 Flatpak 的 VLC 视频播放器 ,它提供了最新的稳定版本。当 Akash 想截图时,他的终极工具是 Shutter,Magazine 曾介绍过。对于图形处理,GIMP 是他不能离开的工具。

Google Chrome 稳定版和开发版是他最常用的网络浏览器。他还使用 Chromium 和 Firefox 的默认版本,有时甚至会使用 Opera。

由于他是一名资深用户,所以 Akash 其余时候都使用终端。GNOME Terminal 是他使用的一个终端。

最喜欢的壁纸

他最喜欢的壁纸之一是下面最初来自 Fedora 16 的壁纸:

这是他目前在 Fedora 29 工作站上使用的壁纸之一:


via: https://fedoramagazine.org/akash-angle-how-do-you-fedora/

作者:Adam Šamalík 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

第九代 Android 带来了更令人满意的用户体验。

我们来谈论一下 Android。尽管 Android 只是一款内核经过修改的 Linux,但经过多年的发展,Android 开发者们(或许包括正在阅读这篇文章的你)已经为这个平台的演变做出了很多值得称道的贡献。当然,可能很多人都已经知道,但我们还是要说,Android 并不完全开源,当你使用 Google 服务的时候,就已经接触到闭源的部分了。Google Play 商店就是其中之一,它不是一个开放的服务。不过无论 Android 开源与否,这就是一个美味、营养、高效、省电的馅饼(LCTT 译注:Android 9.0 代号为 Pie)。

我在我的 Essential PH-1 手机上运行了 Android 9.0(我真的很喜欢这款手机,也知道这家公司的境况并不好)。在我自己体验了一段时间之后,我认为它是会被大众接受的。那么 Android 9.0 到底好在哪里呢?下面我们就来深入探讨一下。我们的出发点是用户的角度,而不是开发人员的角度,因此我也不会深入探讨太底层的方面。

手势操作

Android 系统在新的手势操作方面投入了很多,但实际体验却不算太好。这个功能确实引起了我的兴趣。在这个功能发布之初,大家都对它了解甚少,纷纷猜测它会不会让用户使用多点触控的手势来浏览 Android 界面?又或者会不会是一个完全颠覆人们认知的东西?

实际上,手势操作比大多数人设想的要更加微妙而简单,因为很多功能都浓缩到了 Home 键上。打开手势操作功能之后,Recent 键的功能就合并到 Home 键上了。因此,如果需要查看最近打开的应用程序,就不能简单地通过 Recent 键来查看,而应该从 Home 键向上轻扫一下。(图 1)

图 1:Android 9.0 中的”最近的应用程序“界面。

另一个不同的地方是 App Drawer。类似于查看最近打开的应用,需要在 Home 键向上滑动才能打开 App Drawer。

而后退按钮则没有去掉。在应用程序需要用到后退功能时,它就会出现在主屏幕的左下方。有时候即使应用程序自己带有后退按钮,Android 的后退按钮也会出现。

当然,如果你不喜欢使用手势操作,也可以禁用这个功能。只需要按照下列步骤操作:

  1. 打开”设置“
  2. 向下滑动并进入“系统 > 手势”
  3. 从 Home 键向上滑动
  4. 将 On/Off 滑块(图 2)滑动至 Off 位置

图 2:关闭手势操作。

电池寿命

人工智能已经在 Android 得到了充分的使用。现在,Android 使用人工智能大大提供了电池的续航时间,这样的新技术称为自适应电池。自适应电池可以根据用户的个人使用习惯来决定各种应用和服务的耗电优先级。通过使用人工智能技术,Android 可以分析用户对每一个应用或服务的使用情况,并适当地关闭未使用的应用程序,以免长期驻留在内存中白白消耗电池电量。

对于这个功能的唯一一个警告是,如果人工智能出现问题并导致电池电量过早耗尽,就只能通过恢复出厂设置来解决这个问题了。尽管有这样的缺陷,在电池续航时间方面,Android 9.0 也比 Android 8.0 有所改善。

分屏功能的变化

分屏对于 Android 来说不是一个新功能,但在 Android 9.0 上,它的使用方式和以往相比略有不同,而且只对于手势操作有影响,不使用手势操作的用户不受影响。要在 Android 9.0 上使用分屏功能,需要按照下列步骤操作:

  1. 从 Home 键向上滑动,打开“最近的应用程序”。
  2. 找到需要放置在屏幕顶部的应用程序。
  3. 长按应用程序顶部的图标以显示新的弹出菜单。(图 3)
  4. 点击分屏,应用程序会在屏幕的上半部分打开。
  5. 找到要打开的第二个应用程序,然后点击它添加到屏幕的下半部分。

图 3:在 Android 9.0 上将应用添加到分屏模式中。

使用分屏功能关闭应用程序的方法和原来保持一致。

应用操作

这个功能在早前已经引入了,但直到 Android 9.0 发布,人们才开始对它产生明显的关注。应用操作功能可以让用户直接从应用启动器来执行应用里的某些操作。

例如,长按 GMail 启动器,就可以执行回复最近的邮件、撰写新邮件等功能。在 Android 8.0 中,这个功能则以弹出动作列表的方式展现。在 Android 9.0 中,这个功能更契合 Google 的 材料设计 Material Design 风格(图 4)。

图 4:Android 应用操作。

声音控制

在 Android 中,声音控制的方式经常发生变化。在 Android 8.0 对“请勿打扰”功能进行调整之后,声音控制已经做得相当不错了。而在 Android 9.0 当中,声音控制再次进行了优化。

Android 9.0 这次优化针对的是设备上快速控制声音的按钮。如果用户按下音量增大或减小按钮,就会看到一个新的弹出菜单,可以让用户控制设备的静音和震动情况。点击这个弹出菜单顶部的图标(图 5),可以在完全静音、静音和正常声音几种状态之间切换。

图 5:Android 9.0 上的声音控制。

屏幕截图

由于我要撰写关于 Android 的文章,所以我会常常需要进行屏幕截图。而 Android 9.0 有一项我最喜欢的更新,就是分享屏幕截图。Android 9.0 可以在截取屏幕截图后,直接共享、编辑,或者删除不喜欢的截图,而不需要像以前一样打开 Google 相册、找到要共享的屏幕截图、打开图像然后共享图像。

如果你想分享屏幕截图,只需要在截图后等待弹出菜单,点击分享(图 6),从标准的 Android 分享菜单中分享即可。

图 6:共享屏幕截图变得更加容易。

更令人满意的 Android 体验

Android 9.0 带来了更令人满意的用户体验。当然,以上说到的内容只是它的冰山一角。如果需要更多信息,可以查阅 Google 的官方 Android 9.0 网站。如果你的设备还没有收到升级推送,请耐心等待,Android 9.0 值得等待。


via: https://www.linux.com/learn/2018/10/overview-android-pie

作者:Jack Wallen 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出