Y分钟学习X种语言
世界上有很多有趣的编程语言,但下载它们、安装编程环境可能会是一件非常耗时的事情,
而你很可能只想试一下。好消息是,你可以直接在浏览器里运行很多的编程语言,通常还有
附带有一些教程来指导你了解基础知识。
学着《七周七种语言》这本书的模式,下面是更简洁的版本。
动态语言
函数式编程语言
Web 语言
秘教语言
浏览器IDE
提升级别
动态语言
厌烦了长时间的编译、渴望一种轻量级的脚本环境?动态语言一定会让你喜欢。
尝试Lua语言
Lua是一种轻量级的动态编程语言,对协程(coroutine)有着很好的支持,因为有着简单的C
API,使得它在游戏视频脚本处理方面非常流行。比如游戏引擎LÖVE 和Marmalade
Quick。
尝试Clojure语言
Clojure是大演讲家Rich Hickey的智力结晶,它是一种最古老的编程语言LISP的后裔。关于
Clojure语言的社区很多,我最喜欢的一个Clojure项目是Sam Aaron的Overtone,一种即时
音频编码工具。
尝试 R 语言 (需要简单的注册)
R语言是一种统计及图表技术的免费语言环境,有着大量的用户提交的程序包。你在思考如
何画一个鸡蛋吗?试一下吧。
十分钟学习十种语言
- 4 - 本文档使用 看云 构建
函数式编程语言
函数式编程的思想已经渗透到了大多数主流编程语言里,从C++到VB。然而,如果想真正的
体验函数式编程的富于表达特征,你需要一种以函数式为主的语言。
尝试Erlang语言
Erlang绝对是一种非常有趣的语言,它能帮你打造永不宕机的高容错并行系统。它提供了非
常棒的模式匹配能力。有很多的产品应用和工具都是用它开发的,包括RabbitMQ消息系统
和分布式数据库Riak。
尝试Haskell语言
Haskell语言深度的依赖Miranda编程语言,Miranda在80年代和90年代用于英国大学的教
学。Haskell在此基础上增加了Monads和Type类,在一些大学里仍然有它的课程。它也非常
流行于学院研究方面。
尝试OCaml语言
OCaml语言很像Miranda,是基于ML编程语言,在其中增加了面向对象结构。F#语言是基
于OCaml语言的,甚至还有它的一个兼容模式。OCaml在业内仍然有使用,例如Jane
Street Capital 和 XenSource。
Web 语言
我们已经知道有太多的语言可以编译成JavaScript语言。但仍然有价值看一下JavaScript语言
的一些新功能特征。不妨看看去年Brendan Eich在Strangeloop上的一个谈话,题目是
《The State of JavaScript》。下面是3个我认为非常有趣的脚本语言:
LiveScript
LiveScript是CoffeeScript的间接后裔,有着函数式编程特征,例如模式匹配函数函数组合。
有兴趣的可以看一下10 LiveScript one liners to impress your friends。
尝试 Elm 语言
Elm是一种函数式兼反应式(reactive)语言,适合开发高交互软件,包括各种游戏。反应式编
程是一种有趣的趋势,我认为一些专门针对此设计的语言值得去研究一下。
PogoScript
不幸的是,没有针对这种语言的在线编辑器,但有一个命令行工具REPL。PogoScript适合
做DSL开发,它能允许函数名中有空格。
秘教语言
秘教(Esoteric)语言基本上是只写不用的语言,有点像Perl,但用来娱乐。
十分钟学习十种语言
- 5 - 本文档使用 看云 构建
尝试Brainfuck
Brainfuck是编程语言中的魔方。我去年用纯JavaScript开发出这个网站,你可以试一下fib的
例子。
浏览器IDE
因为网上有这么多用来尝试的编程语言在线环境,可以推想,集成开发环境(IDE)也可以放到
网上。可以预见以后不需要再等4小时来安装Visual Studio了。
Cloud 9是一个在线的开发Node.js应用的平台,集成了各种相关程序包。像Sploder这样的
工具可以让你在线开发游戏。
Try F#网站无可争议的提供了广泛的学习这种语言的功能。云Tsunami IDE也提供了大量的
学习开发F#的工具。CloudSharper也很快会提供一个利用WebSharper开发F# web应用的
IDE。
提升级别
一旦用一种新语言完成了一些简单任务,你就可能想着提升到一些稍微大的任务上。我喜欢
做Kata Catalogue里的一些习题,例如FizzBuzz,Game of Life 和 Minesweeper。
有些人喜欢研究Project Euler里的问题,另外一些人有自己的Hello World应用。比如
Martin Trojer,这是一个Scheme解释器。而Luke Hoban在开发一个Ray跟踪器。。
我建议去参加一些本地的研讨学习小组。伦敦Scala语言交流会每月都有一个编程活动,
F#unctional伦敦人交流会刚好在月中有一个会议,下一次是关于Machine Learning。
在每节后面有问题和习题的编程书籍是很好的学习工具,可以练习你学到的知识,但这样的
书很少。最近出版的《Functional Programming with F#》是一个很优秀的例子,它的每
章后面都有问题习题。
也许几个小时你就能熟悉一种语言的基本知识,但熟练掌握至少要几个星期,而精通,那就
要至少几个月了。
想写出自己的编程语言吗?Pete Sestoft的《程序设计语言概念》对这个主题提供了很好的
介绍。
十分钟学习十种语言
Git & Gitlab 使用指南
去年小组在从 SVN 和 TFS 迁移到 Git 的过程中整理了这份文档,面向的用户是对 Git 和 SVN 可能都不是很了解的人。看到自己写了这么多,于是就拿出来分享下,有些东西可能写得比较浅,有错误还请指正。
1. 关于 Git 你应该知道的东西
Git 是一个分布式版本控制系统。分布式的意思是,每个人电脑上都是一份完整的代码库,包含了所有的代码提交历史。
由于 Git 分布式的特点,在没有网络的情况下,依然可以自由地将代码提交的本地的代码库中,等网络恢复后再推送到服务器,开发更加灵活和自由。
重要概念:本地一个代码库,对本地文件的所有操作,最后都是提交到这个代码库中。同时可以设置多个远程(remote,默认的remote通常用origin表示),当你要将代码更新到服务器上时(称作push),就通过设置的remote,更新到指定的服务器。
数字逻辑与数字系统习题解答与实验指导
数字逻辑与数字系统习题解答与实验指导
1——10章完整答案
编写一个java应用程序
(1)编写一个java应用程序,用户从键盘输入一个整数,判断这个数是几位数;
(2)附加题:判断这个数是否是回文数。
说明:本题用到一个新的知识点:Java中如何进行数据输入,有两种方式:用图形化的界面进行数据输入,或者从DOS命令行输入。
具体编程,请:
(1) 参考《03 Java语言基础.ppt》第36页—42页;
(2) 参考上次作业附件中的电子参考书;或者,到网上或书上找一段现成代码,通过运行分析提取出用于数据输入的代码拿来用即可。
这是最好的方法,毕竟以后我们独立专研时,不会有现成的ppt可以参考。
学生成绩管理程序(源代码+设计报告)
学生成绩管理程序(源代码+设计报告)
1. 课程设计目的
本课题设计是设计一个实用的小型学生成绩管理程序。它有查询和检索等功能,并且能够对指定文件操作,也可以将多个文件组成一个文件。