F#探险之旅(一):选择不同的开发方式

简介:

F#系列随笔索引页面

踏上新的旅途

每次旅途都会让人兴奋,都会带来愉快的体验。踏上新的地方,欣赏那些美景,感受那些与自己无关的人和事,身心会得到很大的放松。而回来以后,则会对自己习惯居住的地方产生新的感受,不知你有没有如此的体会呢?

学习F#,也算是这样的旅途吧,毕竟其理念与一直接触的C/C#等很不一样。好奇心遇到未知的事物就会兴奋,就像要踏上新的旅途一样。那为什么叫探险之旅呢?

知识是有时效的资产,咱们微软平台下的开发人员对此应当感受颇深。平台、语言、环境更新地很快,更新意味着旧有知识的贬值,随之带来的是程序员的贬值(但也不是绝对的)。另一方面,长时间使用同一种平台/语言/环境,我们的思维也会僵化。这些都不是我们希望看到的。

我们需要对自己的知识进行评估并进行投资。富兰克林说,“知识上的投资总能得到做好的回报”,但别忘了,投资总会伴随着风险,这就是所谓的“探险”了。

《程序员修炼之道》建议,每年至少学习一门新语言,认为这会帮助程序员拓展思路,避免墨守成规。个人认为,学习不同的语言,了解解决问题的不同方式,让自己融会贯通,这是好事,但至少要对一门语言有够深的理解,否则可能会“样样精通,样样稀松”。

另外说句题外话,《程序员修炼之道》还建议,阅读非技术书籍,这也许是一个容易被忽略的问题。记住,我们是程序员,但首先我们都作为一个人。

言归正传

要了解F#跟和我们朝夕相处的C#的关系,可以看看Allen Lee从C#3.0到F#。要想快速地获得对F#的了解,可以看看这两篇随笔:F#快速上手(一)F#快速上手(二)

接下来我们看看开发F#时可以选用的不同方式。

(一)Notepad

F#程序本质上就是文本文件,所以我们可以使用文本编辑器来编写,比如记事本。它的文件扩展名为.fs,编写完毕后使用fsc.exe来编译。比如,编写一个最简单的文件helloworld.fs:

# light

print_endline 
" Hello World "
read_line() 

 

使用命令fsc.exe helloworld.fs编译该文件,生成helloworld.exe文件,它将在控制台输出一段文本。注意要将fsc.exe的路径添加到环境变量中。

如果采用文本编辑器的方式,我们当然不会真的使用Notepad,大可以采用Editplus或Notepad++这样的工具,它们不但提供了更强大的编辑功能,还可以添加用户自定义工具,这样就不用每次都打开命令行编译了。

(二)FSI

F#交互控制台(F# Interactive Console, FSI)采用的是“REPL loop”模式,即Read-Evaluate-Print-Loop。也就是输入一段代码,编译并执行,然后输出结果。通过它您可以快速地开发和测试程序。可在开始菜单中找到它。

(三)VFSI(在VS中集成FSI)

要在VS中启用FSI,打开Add-in Manager窗口。

addInManager

选中“F# Inactive for Visual Studio”。然后,选中要执行的程序代码:

firstTwoLines

接着按下Alt+Enter(实际上,如果FSI还么有打开,需要按两次Alt+Enter)。这时会看到出现了一个工具窗口:

fsiWindow

我们刚才做的事情是将代码片段直接发送给FSI会话,FSI将结果输出。

这是最简单的方式了,我们可以利用VS提供的智能感知,可以查看各个标识符的类型等信息,非常方便。

另外我们可以将fsc.exe添加到外部工具中,为该命令分配快捷键。比如可以这样添加:

fsexternaltool

然后分配快捷键:

fstoolshortcut

有时FSI会莫名地不能编译通过,通过这样的方式可以方便的将单个文件编译为可执行文件,编译也不会有问题了。

(四)F# Script

除了.fs,我们还可以将代码文件保存为.fsx,在资源管理器中右击该文件,会发现“Run with F# Interactive”菜单项,选择它就可以执行代码了,这种方式适合于小型文件,可以随时修改,无须编译。

(五)SharpDevelop

最新版的SharpDevelop提供了对F#项目的支持,但是不支持智能感知。我觉得最有用的是它的文件顺序调整功能,如果你的项目包含较多的文件,可以试试它。

关于文件顺序的问题,可以参考如何组织程序一文。

最后,建议主要使用第三种方式即VFSI开发,其它的作为补充。

F#系列随笔索引页面


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2008/08/21/fs-adventure-different-ways.html,如需转载请自行联系原作者。

目录
相关文章
|
2月前
|
前端开发 JavaScript 开发者
前端小白逆袭记:从零开始,如何快速掌握前端开发精髓?
本文从一个前端小白的视角,分享了快速掌握前端开发核心技能的逆袭之路。通过学习HTML、CSS和JavaScript,逐步接触前端框架如Bootstrap、Vue.js和React,克服挑战,最终实现从入门到精通的蜕变。
32 4
|
2月前
|
设计模式 程序员
从零到一:我的编程之旅与技术感悟
【10月更文挑战第22天】这是一篇关于个人编程学习经历和技术感悟的文章。文章以通俗易懂的语言,讲述了作者从一个编程新手,通过不断学习和实践,逐渐成长为一名熟练的程序员的过程。文章不仅分享了学习编程的方法和技巧,还深入探讨了编程的本质和意义,对于想要学习编程的人来说,具有很好的启发和指导作用。
42 2
|
2月前
|
XML IDE Java
安卓应用开发入门:从零开始的旅程
【10月更文挑战第23天】本文将带领读者开启一段安卓应用开发的奇妙之旅。我们将从最基础的概念讲起,逐步深入到开发实践,最后通过一个简易的代码示例,展示如何将理论知识转化为实际的应用。无论你是编程新手,还是希望扩展技能的软件工程师,这篇文章都将为你提供有价值的指导和启发。
38 0
|
3月前
|
自然语言处理 算法 语音技术
探索编程世界的奇妙之旅:从初学者到实践者的蜕变
【10月更文挑战第14天】探索编程世界的奇妙之旅:从初学者到实践者的蜕变
28 0
|
5月前
|
存储 开发工具 Android开发
移动应用开发之旅:从零到精通
【8月更文挑战第30天】本文将带领读者踏上移动应用开发的奇妙旅程,从最初的构想到最终的实现。我们将探索不同的移动操作系统,理解它们的特点,并学习如何为这些平台开发应用程序。无论你是初学者还是有经验的开发者,这篇文章都会为你提供宝贵的见解和实用的技巧。让我们开始吧!
48 3
|
5月前
|
XML Java 开发工具
探索安卓应用开发:从零到一的旅程
【8月更文挑战第31天】跟随一位初学者的视角,本篇文章将带你走进安卓应用开发的奇妙世界。我们将从安装开发工具开始,逐步深入到编写第一个“Hello World”程序,并最终实现一个简单的待办事项应用。通过这个旅程,你将学会如何将创意转化为可触及的应用,体验技术带来的成就感。
|
5月前
|
图形学 人工智能 C#
从零起步,到亲手实现:一步步教你用Unity引擎搭建出令人惊叹的3D游戏世界,绝不错过的初学者友好型超详细指南 ——兼探索游戏设计奥秘与实践编程技巧的完美结合之旅
【8月更文挑战第31天】本文介绍如何使用Unity引擎从零开始创建简单的3D游戏世界,涵盖游戏对象创建、物理模拟、用户输入处理及动画效果。Unity是一款强大的跨平台游戏开发工具,支持多种编程语言,具有直观编辑器和丰富文档。文章指导读者创建新项目、添加立方体对象、编写移动脚本,并引入基础动画,帮助初学者快速掌握Unity开发核心概念,迈出游戏制作的第一步。
281 1
|
5月前
|
关系型数据库 Java 数据库
后端开发之道:从新手到高手的蜕变之旅
在数字时代的浪潮中,后端开发如同一座灯塔,指引着应用程序稳定运行的方向。本文将通过浅显易懂的语言,带领初学者了解后端开发的基本概念、核心技能和职业发展路径。我们将一起探索如何从零基础起步,逐步成长为一名能够独当一面的后端开发高手。无论你是编程新手,还是希望深化后端知识的开发者,这篇文章都将为你的职业之路提供宝贵的指导和启示。
|
5月前
|
Java 开发者 前端开发
Struts 2:如何在大型项目中力挽狂澜,成就企业级应用开发的巅峰之作!
【8月更文挑战第31天】在本案例研究中,我们探讨了Struts 2框架在国际贸易管理系统(ITMS)中的应用,展示了其在大型项目中的优势与实践经验。Struts 2凭借其强大的表单处理、灵活的Action配置、拦截器机制及国际化支持,成为构建可扩展、高性能Web应用的理想选择。文章详细介绍了RESTful URL设计、Ajax集成、文件上传与下载等功能实现,并分享了性能优化、安全措施及遇到的问题与解决方案,为开发者提供了宝贵的参考。通过持续集成与新技术的应用,我们不断优化系统,提升开发效率与竞争力。
47 0
|
6月前
|
JavaScript 前端开发 Java
代码之舞:从编程新手到资深开发者的旅程
【7月更文挑战第19天】编程,一种现代魔法,让无数人为之着迷。本文将通过个人的技术感悟,探讨如何从一个对代码一无所知的新手成长为一名能够自如驾驭复杂项目的资深开发者。我们将穿越编程语言的选择、学习资源的利用、项目实践的重要性以及持续学习的必要,最终达到技术与创造力的和谐共舞。
67 10