.NET平台编程语言的衰败

JVM上的编程语言除了Java,其它还有很多,比如最近谷歌公司力捧JVM平台上的语言Kotlin、大数据用的Scala、构建系统用的Groovy。.NET平台上的编程语言曾经也是很多的,几乎从A到Z打头的各种编程语言都有,不过慢慢的到现在只有C#一个语言独大了。

Visual Basic.NET

Visual Basic是微软老资格的语言,Visual Basic.NET是它移植.NET平台上的语言。移植之后的Visual Basic.NET做了不少变动,也添加了不少特性。因为它是微软官方主推的编程语言,以及有原来VB的高人气,所以开始的时候很多人用它,早期市场上也出版了很多相关图书。不过现在不行了,C#比它简洁先进,.NET开发者很少认准Visual Basic.NET。

F#

F#是微软从2002年开发的.NET平台编程语言,后来它也被集成在Visual Studio中,官网是https://fsharp.org/。它其实是基于Ocaml语言在.NET平台上的实现。Ocaml是一种函数编程语言,函数编程在前几年很火,但是因为它的一些缺点,无法成为主流,虽然主流编程语言吸收了函数式编程思想。所以注定了F#像其它函数式编程语言一样,是流行不起来的。

F#程序例子

F#教程的外文书有不少, 比如F# for C# Developers、F# for Scientists、Get Programming with F#,国内的我只看见过这一本书:F#语言程序设计。

Boo

Boo语言时运行在.NET平台上的面向对象的、动态的、编程语言,语法类似Python,它原先的官网突然关停,现在的网址是https://boo-language.github.io/。Boo以前有一定影响,有不少文章介绍它,还有几本外国教程,比如有一本DSLs in Boo: Domain Specific Languages in .NET,Unity3D好像曾经采用它作为游戏开发脚本语言。但是它有一天突然不行了,原因不清楚。

DSLs in Boo: Domain Specific Languages in .NET

Boo程序

IronPython

IronPython 是由 Jim Hugunin移植到 NET上运行的 Python 语言,他也把Python移植到Java平台上叫Jython。1.0 版于2006年9月5日发布,官网是https://ironpython.net/。近几年因为人工智能的关系,Python现在很火,不过这没有帮助IronPython提高影响,因为IronPython是运行在.NET上的,不方便调用厂商提供的AI库。

IronPython最新版本是2018年发布的IronPython 2.7.8版本,但是自2020年1月1日起,Python 2将不再得到支持。

IronRuby

IronRuby 是 Ruby 编程语言在微软 .NET 平台上的一种实现,它的官网是http://ironruby.net/,它的最新版本是2011年3月13日发布的IronRuby 1.1.3。Ruby几年前因为有了一个Ruby on Rails框架而大火,但是现在它就是一个过气明星,所以IronRuby和JRuby一样,都少人问津。

Delphi

Delphi,是Windows平台下著名的快速应用程序开发工具。自从微软推出.NET后,Borland也追赶潮流,把Delphi移植到.NET平台上,可以用Object Pascal编写WinForm和WebForm程序。但是它的语言比起C#来显得落后,公司实力比起微软来说差距很大,所以大家都认准微软的C#,而不注意Delphi。

所有的.NET编程语言都可以点击这个链接查看:http://en.citizendium.org/wiki/List_of_languages_using_the_.NET_Framework

老外充满干劲,从Ada到Tcl/Tk都移到.NET平台上,还有的自己创造了.NET上的语言。我本人也搞过Lisp运行在.NET上,还自己发明了卓语言运行在.NET上。

不过现实残酷,上面所有的语言都失败,我自己的语言也难。

卓语言计算一组整数总和并打印的例子

语言虽然很多,都是很早以前实现的,但都已经死了或者半死不活,这从一个侧面反映了.NET生态的萎缩恶化衰败,.NET市场的颓势还未见底。

Java平台上编程语言虽然也是大部分死了,但是活下来的Groovy、Scala、Clojure、Kotlin都有着自己的重要应用场景,在一些领域取代了Java,可以说取得了不小的成功,而.NET平台上除了C#都不行了。鼓吹"Mark .NET great again (.NET再次崛起)"的人也要正视这一现实,不总结教训是不行的,说空话时没用的。

.NET平台编程语言的衰败的更多相关文章

  1. MapReduce原理及其主要实现平台分析

    原文:http://www.infotech.ac.cn/article/2012/1003-3513-28-2-60.html MapReduce原理及其主要实现平台分析 亢丽芸, 王效岳, 白如江 ...

  2. CSS实现弹出导航菜单

    查看实际效果:http://keleyi.com/a/bjac/vksd7321.htm 完整代码,保存在html文件打开也可看到效果: <!DOCTYPE html PUBLIC " ...

  3. 盘点 PHP 和 ASP.NET 的10大对比!

    [编者按]本文主要针对开源 PHP 和非开源的 ASP.NET 在性能.成本.可扩展性,技术支持和复杂性等方面进行比较. 在网上论坛,总是有成百上千的文章和帖子在讨论 PHP 和 ASP.NET,究竟 ...

  4. 第二章 Python基本图形绘制

    2.1 深入理解Python语言 Python语言是通用语言 Python语言是脚本语言 Python语言是开源语言 Python语言是跨平台语言 Python语言是多模型语言 Python的特点与优 ...

  5. [Wiki].NET框架

    .NET框架 建议将.NET Framework 3.0并入本条目或章节.(讨论)  .NET框架 .NET框架的组件堆栈 开发者 Microsoft 初始版本 2002年2月13日,​16年前 稳定 ...

  6. GPGPU OpenCL编程步骤与简单实例

    http://www.cnblogs.com/xudong-bupt/p/3582780.html  1.OpenCL概念 OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU.GPU或其 ...

  7. json 与pickle模块(序列化与反序列化))

    一.什么是序列化(pickling): 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 序列化可以持久保存状态, 不会根据计算机断电或者重启程序,而使得之前的数据状态丢失.可以在下次程 ...

  8. 如何基于gRPC沟通微服务框架

    本文我们来讲解一下如何使用 gRPC构建微服务,gRPC是一个开源框架,可用于构建可扩展且高性能的微服务并创建服务之间的通信. 背景 随着企业越来越多地转向微服务,对构建这些微服务的低延迟和可扩展框架 ...

  9. AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】

    原文:AES加密CBC模式兼容互通四种编程语言平台[PHP.Javascript.Java.C#] 由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理: 先简单从百度找来介绍: ...

随机推荐

  1. Zabbix常用监控项整理

    zabbix常用key:http://blog.51cto.com/ttxsgoto/1771752 linux主机cpu使用率超过90%的时候报警:https://blog.csdn.net/reb ...

  2. 2)#ifndef和#pragma once

    #################################################################################################### ...

  3. 30)PHP,引用对象和克隆对象的区别

    复制文件.建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化.

  4. 吴裕雄--天生自然C语言开发: 输入 & 输出

    #include <stdio.h> int main() { ; printf("Number = %d", testInteger); ; } #include & ...

  5. OA项目-需求分析

    ###############  需求分析   ############### """ 工作流 1,工单管理 2,执行记录 权限管理 1,菜单 2,角色, 用户管理 1, ...

  6. Apsara Clouder云计算专项技能认证:网站建设-简单动态网站搭建

    一.课程介绍 1.课程目标 了解静态网站和动态网站的区别 掌握动态网站的不同实现方式 在阿里云上如何搭建 wordPress网站以及 wordPress 网站的管理和优化 二.网站搭建的类型 1.网站 ...

  7. 基于TCP的大文件发送、UDP、socketserver

    基于TCP的大文件发送 #server服务端 import struct import json import os import socket server = socket.socket() # ...

  8. Cocos2dx-JS学习01

    123456 <body><script src="res/loading.js"></script><canvas id="g ...

  9. spring mvc 设置@Scope("prototype")

    spring中bean的scope属性,有如下5种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例 prototype表示每次获得be ...

  10. python函数参数理解

    1.位置参数 函数调用时,参数赋值按照位置顺序依次赋值. e.g. def function(x): 3 return x * x 5 print function(2) 输出结果: 4 def fu ...