go语言 python ruby,这三个怎么选择

Python018

go语言 python ruby,这三个怎么选择,第1张

这选择显然是因人而异的。。至于怎么选,要看你是初学者,还是老手?。。对性能有要求,还是没要求?

如果是完全没有基础,我建议哪个都不选,如果非要选一个,那就选PYTHON。。如果你是初学者,把网上的教程看个遍,再买上几本书。。。你所学会的也仅仅是语法,而根本不会编程。。。因为这些教程,也仅仅是教你语法,而没有教你编程。。你甚至把网上的教程看个精光,却连个最基本的OA系统都做不出来。。。只能在一个黑乎乎的控制台上,打印一堆破字符。。

-------网上的所有教程都会教你的:

怎么定义一个变量?怎么在控制台打印变量?

怎么写一个循环?怎么在控制台打印一堆变量?

怎么写一个函数?怎么在控制台打印返回值?

怎么创建一个对象?怎么在控制台打印对象属性?

------高级一点的教程,会教你的:

怎么用PYTHON的模块,写一个爬虫?

怎么用RUBY的ROR框架,获取一个表单?

怎么用GO的beego,写一个博客?

-------而这些的教程,从来不教你的:

面向对象有什么用? 委托是什么?事件是什么? 工厂模式,单例模式,观察者模式,这些都是啥?套接字是啥?UDP是啥?TCP/IP是啥?二叉树是什么玩意?状态机又是什么玩意?啥叫逆变?啥叫协变?啥叫异步?啥叫反射?

---------------------------------------------------------------------------------------------

如果一套教程,要把这些都讲明白。。。可能需要上千集。。。所以这些教程,都跳过了这些内容。。但如果你不明白这些,就根本学不会编程。。。如果你打算学一门语言,而手上只有几十集教程,外加三五本书。。。那你只能学会玩控制台。。。

所以初学者选择一门语言,首先要保证这门语言作为主要开发语言,常年被公司使用,这样才能真正学会编程。然而这三门语言都不具备这样的特点。它们通常都是被当成第二语言,做一些辅助开发的工作。其中Python只在极少数情况下,才被用来作为主要开发语言。至于Go与Ruby,我目前还没听说过它们有被当作主要开发语言的例子。我所推荐的是从C#和JAVA两者之间,二选一。。。学精其中一门之后,再来考虑PYTHON或GO作为第二语言。。。不然无论你选哪个,都几乎不可能靠一门语言找到工作。

本文在Windows7下测试成功。

安装和设置Git

下载Git for

Windows,采用默认安装,安装完成后就可以在本地使用Git了。

但要将内容放到Github上,必须先在Github网站上注册个账户,然后在本机使用Git创建SSH Key。操作如下:

在Git Bash上输入命令:

ssh-keygen -C "[email protected]" -t rsa

Note: “[email protected]”需要更换成你在Github上注册的Email地址或者是Username

这样会在用户目录(C:\Users\用户名)下产生一个.ssh文件夹,里面为对应的SSH

Keys,其中id_rsa.pub是Github需要的SSH公钥文件。

到c:\Users\用户名\.ssh\目录找到id_rsa.pub(可能位置不一定对,但是确认是以.pub结尾的文件),并用记事本打开复制全部内容。

Note:建议私钥公钥的名称最好写成"id_rsa",这样连接Github的时候会找这个文件,如果文件名已定,之后改名也行。

在github网站选择“Account Settings”>>“SSH Public Keys”>>“Add another

public key”,将刚才复制的内容粘贴到key文本框内。

这样就可以直接使用Git和GitHub了。

Note:建议在Git Bash中输入“ssh -v [email protected]”测试能够正常连接github

安装Ruby环境

下载RubyInstaller和DevKit。

因为Octopress需要的Ruby版本为1.9.2,所以选rubyinstaller-1.9.2-p290.exe,DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe。

先安装RubyInstaller,然后解压缩DevKit(路径中不能有中文)。

在“Start Command Prompt with Ruby”命令行中进入DevKit解压缩的目录,然后运行以下命令:

ruby dk.rb init

ruby dk.rb install

gem install rdiscount --platform=ruby

如果安装成功,就可以使用一些Ruby的工具了,也为后面搭建博客提供了基础环境。

安装Octopress

先通过Git从Github上克隆一份Octopress(在Git Bash上输入命令)

git clone git://github.com/imathis/octopress.git octopress

然后安装一些依赖的工具(后面都是在Start Command Prompt with Ruby中输入)

cd octopress

ruby --version # Should report Ruby 1.9.2

gem install bundler

bundle install

安装Octopress默认的Theme

rake install

配置Octopress

将octopress的文件夹下的_config.yml的编码改成UTF-8:

保存(或另存为)时选择编码格式为UTF-8

修改_config.yml,批改url、title、subtitle、author等等。

到Ruby的安装目次\lib\ruby\gems\1.9.1\gems\jekyll-0.11.2\lib\jekyll\找到convertible.rb这个文件,批改self.content

= File.read(File.join(base, name))为self.content = File.read(File.join(base,

name), :encoding =>"utf-8")。

写博文

最简单的方式:复制octopress\source\_posts下某个文件,例如2012-07-30-the-first-post.markdown,修改文件名和文件中的内容

或者,命令行中输入rake

new_post["title"],会创建一个新的Post,新文件在source/_post下,文件名如下面的格式:2012-07-31-title.markdown。该文件可以直接打开修改。

写文章时,可以使用Markdown和Octopress

Plugins等工具对内容进行格式排版。

预览效果

在修改设置或者写完文章后,想看看具体效果,可以通过如下命令来完成:

rake generate

rake preview

将博客部署到Github上

在预览的效果符合自己的预期后,就可以通过如下命令将内容部署到Github上了。

如果是第一次部署,需要在Github上创建一个username.github.com的repository

在github网站选择“Create a New Repo”,如图

填写对应的内容即可

note:Repository

name填写username.github.com,username一定要和github的username一致,建好的博客代表的是你这个github账户的主页即page

配置octopress与github的连接:

进入Octopress目录:

rake setup_github_pages

按照提示填入你的github项目网址,比如:

[email protected]:Username/yourname.github.com.git

note:可以按照上面的修改,也可以在github的项目页中找地址

分发到github上:

rake deploy

第一次运行时,会询问是否建立对github的授权,输入:yes。然后将站点更新的内容推送到github上。

补充一点:

最后的但并不是最重要的,我们需要将修改的日志同步到github上,因此下面的3个命令也是必须的。

git status

git add .

git commit -m 'your message'

git push origin source

大功告成!

年 月 日

    Ruby on Rails 开发和 Java&# 开发有着本质的不同 在 跨越边界 系列的最后一期中 Bruce Tate 将概述使用 Rails 从头开发一个复杂 可伸缩的 Web 站点时所发现的二者的主要差异

Rails 开发人员常常把 Java 开发人员看作是沉闷而劳碌的老古董 而 Java 崇拜者则常常认为 Ruby on Rails 只是一个玩具 根本不能用于任何严肃的软件开发 作为一名对这两种技术都有着广泛使用经验的顾问 我认为真实的情形介于这两种观点之间 由于跨越边界 系列文章即将结束 因此我打算对它们再作一次比较 本文并非考察某种特殊的技术或语言 而是主要介绍我当前正在从事的项目 并将它与我以前从事的 Java 项目进行比较 另外 我建议您阅读 跨越边界 系列的前几期文章 对相关主题作更深入的了解 这种直接的说明可让您在二者之间权衡利弊 并可能使您在数据库 Web 应用程序 green field 的开发中通过使用 Rails 获益

业务问题

关于本系列

在 跨越边界 系列文章中 作者 Bruce Tate 提出这样一种观点 当今的 Java 程序员们可以通过学习其他方法和语言更好地武装自己 自从 Java 技术明显成为所有开发项目最好的选择以来 编程前景已经发生了改变 其他框架影响着 Java 框架的构建方式 从其他语言学到的概念也可以影响 Java 编程 您编写的 Python(或 Ruby Smalltalk 等语言)代码可以改变编写 Java 代码的方式 本系列介绍与 Java 开发完全不同的编程概念和技术 但是这些概念和技术也可以直接应用于 Java 开发 在某些情况下 需要集成这些技术来利用它们 在其他情况下 可以直接应用概念 具体的工具并不重要 重要的是其他语言和框架可以影响 Java 社区中的开发人员 框架 甚至是基本方式

不论是 Ruby on Rails 框架还是任何 Java 框架都不能解决所有问题 为了提高成功的几率 需要长期 细致地考察业务问题 理解周围的各种假定情况 以及了解您的团队 只有这样才能选出正确的语言来进行开发

去年 Arvato Systems 聘请我带领团队构建 Ch 它是一种新平台 用于将非赢利性团体和捐赠人组织在一起 与很多 Internet 公司一样 我们向客户展示了可购买的实际产品 与其他公司不同的是 这些 产品 指的是提供机会 比如 一名癌症研究员一小时服务收费 美元 帮助盲人收费 美元 或者保护一英亩雨林一个月收费 美元 我们面临两大挑战 一份很紧凑的时间表和长期的复杂性

开发工作从九月份开始 要求必须在十一月份之前建立起一个站点 以便有机会赶上圣诞节期间的通信量高峰 (最终我们超出了十一月份这个期限两星期 )在其他开发语言中 基于 Java 的解决方案可能要花费 到 个月才能完成这一任务 因此生产力是一个很重要的考虑因素 这与 Java 部署思想相悖

通过对竞争对手和项目的考察 我们了解到 我们希望能够每天给站点带来几百万次点击的通信量 而我们需要每天有几十万次成功的点击 因此可伸缩性也是一个考虑因素 这与 Java 部署思想相符

最后 我们了解到 发布初始站点只是一个开始 我们只实现了总体规划的百分之三 因此我们所选的技术需要根据复杂性和负载作出一些调整 我认为 Ruby 语言在复杂性方面会更易于调整 因为它提供了对更高级语言和特性(如开放类)的支持 以及具有更少配置需求和更简单 集成化编程模型的 Rails 框架

虽然我们面临着时间和可伸缩性方面的挑战 但是也拥有一些其他的有利因素 我们拥有一张完全空白的候选名单 可以选择想要的任何技术 任何团队 可以定义项目 培训和全部的技术 我们可完全自由地作出选择

Java 语言是一种优秀的通用语言 它总是应用于新的技术领域 如嵌入式系统和移动设备 Java 语言在广泛关注的集成方面也表现优秀 它具有高性能 流行并受到平台的良好支持 但是正如您在本系列中所了解到的那样 Java 语言并不是用于数据库支持的 Web 应用程序的 green field 开发的最佳选择

相比之下 Ruby on Rails 框架则是新的 并没有很多人使用 Rails 开发高通信流量的站点 并且几乎不存在什么使用 Rails 多年开发项目的经验 但它仍然是一种高生产力的数据库支持的 Web 应用程序开发的框架 最后 尽管我们对 Rails 缺乏开发长期项目的经验和并未得到广泛部署有所顾虑 但那份紧凑的时间表驱使我们选择了 Ruby on Rails

作出这个决定之后 我们发现招募项目人才非常容易 我们还发现早期的生产力优势非常显著 —— 甚至比预期的还要好 我们确实遇到了一些早期的稳定性问题 因此加强了测试工作的力度 此后稳定性得到了极大的改进

原理

每个框架设计者都使用一组假定来构造该框架的重写原理 学习遵守该原理的约束可使您愉快地进行编程 而挑战这些约束则会使您的编程受挫 Rails 框架和 Java 框架拥有很多不同的原理

Rails 是一种集成框架 需要使用高度利用 Ruby 语言的动态本质 Rails 开发人员强调框架的生产力特性而不是工具特性 并且常常将 Web 架构看得非常简单 在本系列的前几篇文章中您已了解到这一点 Java 设计者通常必须分块地组合开发环境 独立地选择持久性 Web 和集成层 他们通常严重地依赖工具来简化核心任务 Web 架构设计趋向于较为复杂

完全集成

Java 框架往往是解决一个小问题(比如持久性或查看组织) 而 Rails 则是一个集成环境 Rails 开发人员的优势在于不必解决与许多不同框架集成的问题 大多数 Hibernate 开发人员陷入了过早关闭与 Java Web 框架之间的连接的陷阱 Rails 视图框架是从头构建的 以便与 ActiveRecord 集成(Rails 持久性框架) 当您考察用于 Web 服务 配置和插件的 Rails 框架时也会发现类似的经验 Java 编程支持各种不同的框架 对于所有这些框架使用不同的集成策略

Java 开发人员的优势在于选择 如果您需要从头构建一个框架 则可能要考虑使用基于 SQL 的解决方案用于数据库集成(如 iBATIS 或 Java 编程中基于 JDBC 的包装框架之一) 反过来 如果要使用一种古老的模式进行编程 则可能要使用对象关系映射框架(如 Hibernate) 相比之下 如果您使用 Rails 则拥有一个主要选择 ActiveRecord 这意味着 Java 框架提供了更多的选择 有时能提供更好的集成开发项目的解决方案 但是由于我们要开发一个 green field 项目 因此选择算不上是一个问题

一种动态语言

Rails 原理的下一个主要部分是动态编程语言 Java 工具往往可以有效地使用 Java 类型模型提供的额外信息 工具可以识别错误和有效地重构代码 Rails 还可有效地利用编程语言的优点 Ruby 是一种构建特定于域的语言(DSL)的理想语言 Rails 集中使用 DSL 来完成从构建模型对象之间的关系到指定自定义组件(如状态机器或可上传的图像)的所有工作 动态语言常常更加简洁 因此 Rails 项目比 Java 项目要简练得多 可让用户更简练地表达代码和配置 在 Ch 项目中 我们发现技术顶尖的程序员可达到更高的生产力 但是我们确实需要招募经验更丰富的开发人员 我对这种妥协非常满意

传统的 Java 程序员对 IDE 有着近乎虔诚的热爱 造成这一现象有充分的理由 IDE 提供了语法的完整性检查 修正了小错误并提供了增量编译以便更快地完成编码 编译 部署和测试这样的周期 最近几年来 开发环境开始更好地利用编译循环和静态类型提供的信息 IDE 现在编辑抽象语法树(AST) 而不是(或者同时)编辑代码的文本表示 这一策略允许使用强大的代码重构工具 而使用静态类型语言的同样方法来实现此功能则困难得多

静态类型确实能更好地使用工具 但是也存在缺点 强制使用静态类型通常需要编译器 而编译步骤必然会降低生产力 使用 Rails 我可以更改一行代码并重新加载浏览器 就可立即看到更改的结果 与 Java 开发人员相比 大多数 Ruby 开发人员只使用一种很好的编辑器 TextMate 是最流行的 Ruby on Rails 编辑器 它提供了语法突出显示 代码完整性检查 以及一些频繁使用的结构的良好的模板支持 而当发现可将所有简单的基于 Ruby 的脚本(用作基本的 Rails 工具包)放入编辑器中时 您会更加喜出望外 与纯粹的调试器不同的是 我可以使用断点脚本 该脚本可停止特定的应用程序 进入一个 Ruby 解释程序 我可在其中调用方法 检查变量的值 以及甚至在恢复执行之间修改代码

简单的架构

传统的 Web 端 Java 架构包括 一个用于域对象和数据访问对象的层 一个提供业务级 API 的外观层 一个控制器层和一个视图层 此架构比典型的 模型 视图 控制器 架构(使用 Smalltalk 语言最早创建)稍微复杂一些 相比之下 Ruby on Rails 包括一个使用 ActiveRecord 设计模式的模型层 一个控制器层和一个视图层 我们喜欢易于获得的 Rails 方法 它更加简练并且带来额外的复杂性和错误的机会更小

惯例优先原则

Java 框架通常可以自由地使用 XML 配置 而 Rails 主要使用惯例来避免可能的配置 在程序员必须指定配置的位置 Rails 通常依赖 Ruby(常常以 DSL 形式)来提供配置 对于 green field 开发 我发现惯例优先于配置是很有意义的 该策略为我省去了很多行代码 更简化了必须编写的代码 估计我们所需的配置只有传统 Java 应用程序中所指定的十分之一 我们有时会损失一点灵活性 但这并不足以抵消使用此策略带来的节省

总而言之 Rails 框架的原理适合解决 Ch 项目中的问题 集成的各种工具让我可以利用框架实现更多的功能而无需自己进行过多的集成 惯例优先原则 为我节省了配置站点的时间 动态语言为经验丰富的开发人员提供了更多的能力和灵活性 同时也使他们能够利用更少的代码表达更强大的思想 该框架适合于我们团队的能力和要解决的业务问题

持久性

Java 和 Ruby 语言的最流行的持久性框架可以比任何其他特性更好地阐明 Java 和 Ruby 经验之间的区别 Java 开发人员通常使用 Hibernate 它是一种对象关系映射框架 通过 Hibernate 您可获取现有的模型和模式并使用注释或 XML 表达二者之间的映射 Hibernate 类是简单传统 Java 对象(POJO) 它的每个对象派生自一个通用的基类 大多数配置是显式的 使用注释 XML 或二者的某种结合

而 ActiveRecord 是一种包装的框架 就是说每个类都是现有类的包装器 ActiveRecord 根据关联表的内容(如表中每列的一个属性)自动地向模型对象添加特性 所有的类都从一个通用的基类继承 ActiveRecord 主要利用通用约定来推断配置 例如

ActiveRecord 利用类名的复数形式来推出表名 主键的名称为 id 列表的排序顺序由 position 字段决定

对象关系映射是使用遗留模式(可能定义时没有考虑对象模型)时的最佳解决方案 但是当您能为应用程序显式地设计数据库模式时 您通常不需要映射框架了 我们将 ActiveRecord 看作我们的一个巨大优点 我们可以包含关系数据库 需要时转入 SQL 并在适当的时候退出

迁移

Rails 迁移使我们能够用代码表示模式的两个版本之间的差别 和它们所包含的数据之间的差别 对每个迁移都进行了命名和编号 可在任何时候恢复到任何版本 迁移有以下一些确切的优点

产生错误代码时可恢复到一个旧版本的模式 用代码而不是 SQL 来表达模式 更便于我们使用 在最大程度上与数据库独立

但是迁移也有一些限制 如果两个开发人员同时创建迁移 则编号会出现混乱 所以我们必须手动处理 我们通过有效的通信来使这些问题最小化 团队成员构建需使用迁移的新模型时发出通知 但是这个模型依赖于团队的开发人员较少或迁移进展较慢的情况

ActiveRecord 还有其他的限制 其中一些是故意作出的 Rails 的创建者认为 数据库的约束和组成应归入应用程序而不是数据库 这种思想带来了一些副作用 ActiveRecord 使用视图的情况不是很好 构建过程(克隆模式 复制测试数据并运行测试)并不能正确地进行复制 ActiveRecord 在使用参考完整性约束的某些场合也会出现问题 因为某些类型的关联可能连接到多个数据库表 跨越复杂模型进行预先加载很复杂 通常在连接多行时需要使用 SQL 继承也受到限制 使用 ActiveRecord 时 我被迫使用 单表继承 映射策略 而该策略并不总是最佳选择

所有的持久性策略都充满了妥协 我认为 ActiveRecord 实现了一组有效的妥协 常常选择了简单性 总而言之 ActiveRecord 和迁移是我们的积极推动 我们可以快速地构建解决方案 我们拥有足够的 SQL 访问权可在需要时改进系统性能 但是当 ActiveRecord 并不总能应对挑战时 最好将 Rails 应用于使用老旧模式的项目 一些替代的持久性模型正在出现 包括 RBatis 一种 iBATIS Java 框架的端口 现在讨论 RBatis 的有效性还为时过早

结束语

对于我的团队和项目来说 Ruby on Rails 被证明相当有效 我还不知道这个项目的最终规模如何 因为撰写本文时该系统才运行 个月 现在只是开始增加通信量 但是我们对生产力却很了解 我知道团队的预算比竞争公司(这些公司常常使用 Java 解决方案)的要低得多 我对我们的生产力也很有信心

通过 跨越边界 系列 我向您介绍了 Java 领域以外的语言和解决方案 但程序员毕竟是技术人员 每个高明的技术人员的工具包中都应包含适用于每个解决方案的广泛的工具集 除工具外 本系列中介绍的观点也为您展示了一些其他思路 现在一些框架设计者甚至将 Seaside Rails 中的技术甚至 JavaScript 应用于 Java 框架中 找机会进行同样的应用 继续 跨越边界

关于作者

lishixinzhi/Article/program/Java/hx/201311/26713