SlideShare a Scribd company logo
1 of 18
Alternate Languages
For The CLR
Onorio Catenacci,
Software Developer, RIIS, Inc.
@OldDutchCap catenacci@ieee.org
Introduction
● Who Am I
o @OldDutchCap
o catenacci@ieee.org
● What We’ll Discuss
● What We (Probably) Won’t Discuss
● Some bookkeeping
2
@OldDutchCap catenacci@ieee.org
Where The CLR Belongs
3
HARDWARE
BIOS
Operating System
Command
Shell
Virtual Machine
e. g. CLR, JVM, BEAM
Device Drivers
@OldDutchCap catenacci@ieee.org
Where Languages Belong
4
CLR
CLR LANGUAGE
JIT Compiler
IL
Operating System
Native
@OldDutchCap catenacci@ieee.org
Alternate Languages
5
@OldDutchCap catenacci@ieee.org
Change Your Thinking
● Four words
6
@OldDutchCap catenacci@ieee.org
Access Other Libraries
● You want to rephrase that?
7
@OldDutchCap catenacci@ieee.org
Learn New Skills
The only difference between a rut and a grave
are the dimensions. --Ellen Glasgow
8
@OldDutchCap catenacci@ieee.org
What Alternate Languages Exist?
● List here:
http://en.wikipedia.org/wiki/List_of_CLI_lang
uages
9
@OldDutchCap catenacci@ieee.org
Older Languages
● COBOL (yes, COBOL)
● Ada
● Prolog
● C++
10
@OldDutchCap catenacci@ieee.org
Functional Languages
● F#
● Clojure CLR
● IronScheme
● Nemerle
11
@OldDutchCap catenacci@ieee.org
Scripting Languages
● IronPython
● IronRuby
12
@OldDutchCap catenacci@ieee.org
Memento Mori
● Axum
● Scala For .Net
13
@OldDutchCap catenacci@ieee.org
Rosetta Code
14
using System;
namespace rosettacode1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Console.ReadKey();
}
}
}
@OldDutchCap catenacci@ieee.org
Rosetta Code
15
// F# Version
open System
[<EntryPoint>]
let main argv =
Console.WriteLine("Hello, World!")
Console.ReadKey() |> ignore
0
main([|""|])
@OldDutchCap catenacci@ieee.org
Rosetta Code
16
;Iron Scheme Version
(import (rnrs))
(display "Hello World!")
(newline)
@OldDutchCap catenacci@ieee.org
Reasons Not To Use Alternates
● C# == Production Code
● C# Always Gets MS API Support
17
@OldDutchCap catenacci@ieee.org
You Must Remember This
● Alternate Languages
o Help expand our skills
o Let us use libraries in other languages
● Probably not ready for production work just
yet
18

More Related Content

What's hot

Most Bizarre Programming Languages Ever Created
Most Bizarre Programming Languages Ever CreatedMost Bizarre Programming Languages Ever Created
Most Bizarre Programming Languages Ever CreatedMaciej Płoński
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! languageAndré Mayer
 
Learning at the Speed of JavaScript
Learning at the Speed of JavaScriptLearning at the Speed of JavaScript
Learning at the Speed of JavaScriptJake Witcher
 
Static analysis for perl
Static analysis for perlStatic analysis for perl
Static analysis for perlmoznion
 
Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Chang W. Doh
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)ShubhamMishra485
 

What's hot (7)

Most Bizarre Programming Languages Ever Created
Most Bizarre Programming Languages Ever CreatedMost Bizarre Programming Languages Ever Created
Most Bizarre Programming Languages Ever Created
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
 
Learning at the Speed of JavaScript
Learning at the Speed of JavaScriptLearning at the Speed of JavaScript
Learning at the Speed of JavaScript
 
Static analysis for perl
Static analysis for perlStatic analysis for perl
Static analysis for perl
 
Lexing and parsing
Lexing and parsingLexing and parsing
Lexing and parsing
 
Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)
 

Similar to Alternate languages for the CLR

Number of Computer Languages = 3
Number of Computer Languages = 3Number of Computer Languages = 3
Number of Computer Languages = 3Ram Sekhar
 
Do Languages Matter?
Do Languages Matter?Do Languages Matter?
Do Languages Matter?Bruce Eckel
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesEdorian
 
Bridging Ousterhout's Dichotomy
Bridging Ousterhout's DichotomyBridging Ousterhout's Dichotomy
Bridging Ousterhout's Dichotomyguest2838a0
 
TDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageTDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageLuciano Sabença
 
Streaming 101: Hello World
Streaming 101:  Hello WorldStreaming 101:  Hello World
Streaming 101: Hello WorldJosh Fischer
 
useful library in rust@shitamachi.rs #2
useful library in rust@shitamachi.rs #2useful library in rust@shitamachi.rs #2
useful library in rust@shitamachi.rs #2Yusuke Mori
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013Iván Montes
 
C++ Restrictions for Game Programming.
C++ Restrictions for Game Programming.C++ Restrictions for Game Programming.
C++ Restrictions for Game Programming.Richard Taylor
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...Aurélien Pupier
 
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"PromptWorks
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache SparkHolden Karau
 
Graduates Gone Mad: Innovations in Software
Graduates Gone Mad: Innovations in SoftwareGraduates Gone Mad: Innovations in Software
Graduates Gone Mad: Innovations in SoftwareAlper Kanat
 
Lambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageLambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageAccenture | SolutionsIQ
 
Building An Elixir Package
Building An Elixir PackageBuilding An Elixir Package
Building An Elixir PackageOnorioCatenacci
 

Similar to Alternate languages for the CLR (20)

Number of Computer Languages = 3
Number of Computer Languages = 3Number of Computer Languages = 3
Number of Computer Languages = 3
 
Do Languages Matter?
Do Languages Matter?Do Languages Matter?
Do Languages Matter?
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principles
 
Bridging Ousterhout's Dichotomy
Bridging Ousterhout's DichotomyBridging Ousterhout's Dichotomy
Bridging Ousterhout's Dichotomy
 
Four Python Pains
Four Python PainsFour Python Pains
Four Python Pains
 
TDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageTDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-Language
 
Let's Contribute
Let's ContributeLet's Contribute
Let's Contribute
 
Streaming 101: Hello World
Streaming 101:  Hello WorldStreaming 101:  Hello World
Streaming 101: Hello World
 
useful library in rust@shitamachi.rs #2
useful library in rust@shitamachi.rs #2useful library in rust@shitamachi.rs #2
useful library in rust@shitamachi.rs #2
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013
 
C++ Restrictions for Game Programming.
C++ Restrictions for Game Programming.C++ Restrictions for Game Programming.
C++ Restrictions for Game Programming.
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...
 
Craft of coding
Craft of codingCraft of coding
Craft of coding
 
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"
PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Graduates Gone Mad: Innovations in Software
Graduates Gone Mad: Innovations in SoftwareGraduates Gone Mad: Innovations in Software
Graduates Gone Mad: Innovations in Software
 
Lambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageLambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional Language
 
IT glossary
IT glossaryIT glossary
IT glossary
 
Introduction to Binary Exploitation
Introduction to Binary Exploitation	Introduction to Binary Exploitation
Introduction to Binary Exploitation
 
Building An Elixir Package
Building An Elixir PackageBuilding An Elixir Package
Building An Elixir Package
 

Recently uploaded

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

Alternate languages for the CLR

Editor's Notes

  1. First of all a bit about me My name is Onorio Catenacci and I’ve been a .Net developer almost as long as there’s been .Net; about 12 years or so. You can reach me via twitter at @OldDutchCap and you can e-mail me at catenacci@ieee.org. Those two things will be at the bottom of all the slides so don’t worry about writing that down. Tonight we’ll be discussing other languages built on the CLR platform besides C#. I will also try to get to some code samples but since we’re going to be discussing a breadth of languages, I can’t go very deep into any of them. If you see a language and want to know a bit more about it, my suggestion would be to go to RosettaCode and check out examples of how to code in the language. One thing I want to avoid is some of the religious arguments which come up when developers discuss languages. I don’t think of languages as being “better” or “worse” than other languages. I just think some languages make certain chores easier and some languages make certain chores harder. A couple of bookkeeping points here: Please silence your phone if you haven’t done so already. If you think of a question while I’m talking, please raise your hand. We’ll have time for questions at the end as well but I’d rather people ask questions while they’re fresh in their minds than wait till the end of the talk to ask. Please remind me if I forget to repeat the question back to the person asking me the question.
  2. So probably the first question most developers will have is “Why bother with other languages on the CLR? Isn’t C# capable of doing everything I need?” I think there are a few good reasons to at least examine alternate languages on the .Net platform; I’ll cover them right now.
  3. A friend of mine, Leon Gersing, used to be an actor on Broadway. Leon related the story of sitting in a deli in New York City with some friends discussing a performance of Chekov they’d just seen. A Russian fellow who happened to be sitting nearby said something like “Pardon me but I couldn’t help overhearing you. It’s a shame you don’t speak Russian; Chekov is much better in the original language. In Russian there are several different words for love and Chekov uses all of them.” While the Sapir/Worf hypothesis doesn’t hold true as far as I know, it is certainly true that certain ideas are very tough to express without the right vocabulary to capture them. And certain programming ideas are very hard to express without the right code constructs. Anyone here tried to write an implementation of a linked list in a language that doesn’t have recursive types? It can be done but it’s neither easy or fun. I will say that I think it’s a shame that Object Orientation has become the new orthodoxy. While OO is fine for solving lots of problems there are a whole range of problems that simply don’t decompose into objects easily and developers end up kludging together weak solutions in those cases.
  4. There are some libraries already present in other languages which are sometimes handy to use in C#. If you want to use these libraries you’re left with a choice; try to find a similiar library in C#, try to rewrite the code in C# or try to figure out another way to get the functionality you need.
  5. Another reason to investigate alternate CLR languages is to learn new skills. Even if you’re happy in the rut you’re in, learning new skills can still make you a more effective developer.
  6. So what other alternate languages exist for the CLR? You can find a list of them here; there are probably about 20 or so. I’m going to focus the rest of this talk on the more interesting and maintained alternate languages.
  7. Yes, there is a version of COBOL for .Net. The biggest advantage of this, is, of course creating new code to work with legacy COBOL code that you don’t want to have to rewrite. As an aside there’s also Ada and Prolog but it seems as if both of them are basically abandonware. If anyone’s unfamiliar with Ada, it’s used in defense department work while Prolog is an implementation of Logic programming One interesting point; when MS first released the CLR and the .Net platform, they were uncertain of the reception of either C# or VB.Net but they had a powerhouse in C++. So they built a version of C++ which basically, for lack of a better way to say it, neutered the manual memory management which had always been a hallmark of both C and C++.
  8. Now the functional languages take the traditional paradigm of default mutability and flip it on its head. While I don’t have the time or the inclination to do a long discussion of the ideas behind functional programming, suffice it to say that functional is gaining a lot of traction in more cutting edge shops. I’ll show you some rosetta code in some of the functional languages in just a bit. You might also note that “IronScheme” is on that list; we’ll see that name “IronBlahBlah” again. The story goes that Iron is short for I Run On .Net.
  9. Now besides having the distinction of being scripting languages for the CLR, IronPython and IronRuby also have the distinction of being a large part of the reason that the DLR was created. Both python and ruby are dynamically typed languages. The CLR itself was designed with statically typed languages in mind. When Jim Hugunin created the language, he also had to basically create the dynamic language runtime from scratch. Around 2006, Microsoft officially began supporting these two languages but in 2010, they dropped support for them. IronPython is still around but I believe IronRuby, like Prolog and Ada is basically abandonware.
  10. There are a few other languages worth a quick mention before we move on to other topics. These are a couple of languages which are definitely gone. Axum was an implementation of the actor model for .Net. In a sense it could be called an interesting hybrid of Erlang and C. While Axum has been discontinued for years several of the ideas which started in Axum ended up in the TPL and in the async behavior of current versions of .Net Scala for .Net was at one point actively developed with the help of MS Switzerland (or so I understand anyway). Scala, like F#, Clojure CLR and Iron Scheme is a functional language but unlike those other three languages Scala retained a bit more of the OO flavor.