CSC/ECE 517 Fall 2009/wiki2 6 hl: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
=Hybrid Programming Languages= | =Hybrid Programming Languages= | ||
Hybrid Programming Languages are multi-paradigm languages that not only support basic Object Oriented features but other features of different programming paradigms. Multi-paradigm languages have been around for a while (LISP 1958, C++ 1983) but recently there has been a push to develop true Multi-paradigm languages that bridge the OO/Functional Programming gap; the push has been spurred on by the advent of the multi-core CPU. Programmers can no longer expect single threaded performance to drastically improve with each new CPU release. | Hybrid Programming Languages are multi-paradigm languages that not only support basic Object Oriented features but other features of different programming paradigms. Multi-paradigm languages have been around for a while (LISP 1958, C++ 1983) but recently there has been a push to develop true Multi-paradigm languages that bridge the OO/Functional Programming gap; the push has been spurred on by the advent of the multi-core CPU. Programmers can no longer expect single threaded performance to drastically improve with each new CPU release. | ||
Hybrid Languages | |||
Languages such as Scala, Fan, F#(OCaml) and Reia try to address this problem in similar and unique ways. | Languages such as Scala, Fan, F#(OCaml) and Reia try to address this problem in similar and unique ways. | ||
Line 6: | Line 8: | ||
==Scala== | ==Scala== | ||
Scala or "Scalable Language" was developed by Martin Odersky of EPFL to be a both Object Oriented and Functional language at the same time. Contrary to popular belief the "Scalable" means scalable with the programmer and their skills, ie OO programmers can move to Functional programming and Functional programmers can move to OO approaches. Scala shouldn't be considered a "pure" functional language [LINK TO SCALA BLOG], it can be thought of as an pure "OO" language since every value is an object and every function is a value [LINK TO SCALA INTRO PAGE]. It is a statically typed language that is compiled into bytecode that is compatible with the Java VM with comparable speeds to Java. | Scala or "Scalable Language" was developed by Martin Odersky of EPFL to be a both Object Oriented and Functional language at the same time. Contrary to popular belief the "Scalable" means scalable with the programmer and their skills, ie OO programmers can move to Functional programming and Functional programmers can move to OO approaches. Scala shouldn't be considered a "pure" functional language [LINK TO SCALA BLOG], it can be thought of as an pure "OO" language since every value is an object and every function is a value [LINK TO SCALA INTRO PAGE]. It is a statically typed language that is compiled into bytecode that is compatible with the Java VM with comparable speeds to Java. | ||
===Language Highlights=== | |||
* OO and Functional | |||
* JVM | |||
* Concurrent (Immutable and Actor Model) | |||
* Compatible with existing Java Libraries | |||
* Statically Typed | |||
* Mixin Model | |||
* Mutable and Immutable types | |||
* Tuple return support | |||
==Fan== | ==Fan== | ||
Fan supports an | Fan supports an Object Oriented and Functional Programming paradigms. Fan and Scala are often compared and contrasted since they both run on the Java VM. Fan isn't just tied to the JVM though it also supports the .NET CLR (Common Language Run-time) and Javascript. Fan is a "loosely" typed language : method/function responses are statically typed but inner scoped variables are allowed to be dynamically typed. It's an interesting approach since a method's type contract should always be adhered to but within a method forced typing can reduce programming efficiency. | ||
===Language Highlights=== | |||
* OO and Functional | |||
* Portable: JVM, .NET CLR and Javascript | |||
* Mixin Model | |||
* REST namespace | |||
* Concurrent (Immutable and Actor Model) | |||
==Reia== | ==Reia== | ||
Reia is an Object | Reia is an Object Oriented and Functional Programming that incorporates Ruby/Python-like syntax to the the Erlang BEAM VM. Reia is based upon Erlang's concurrent Actor model. Objects don't share a heap which requires communication between objects to be implemented through message passing. | ||
===Language Highlights=== | |||
* Functional and OO | |||
* Concurrent (Actor Model) | |||
* Objects don't share memory | |||
* Variables can be assigned multiple times | |||
* Hooks to access/write Erlang | |||
==F#/OCaml== | ==F#/OCaml== | ||
F# is the officially supported Functional Programming language for .NET with Objected Oriented features. Its a variant of the popular OCaml functional/object oriented language that was developed in 1996. OCaml itself is a variant the CAML language that added Objects, hence the name of Objective-Caml or OCaml. | F# is the officially supported Functional Programming language for .NET with Objected Oriented features. Its a variant of the popular OCaml functional/object oriented language that was developed in 1996. OCaml itself is a variant the CAML language that added Objects, hence the name of Objective-Caml or OCaml. F# has extended OCaml by adding .NET support with improvements to the Garbage Collector (GC) that allows for Symmetric Multiprocessing (SMP) threading. OCaml's GC doesn't allow for SMP threading [LINK to OCAML GC | ||
===Language Highlights=== | |||
* Functional and OO | |||
* Improved GC | |||
* Comparable speeds with C or C++ |
Revision as of 06:01, 9 October 2009
Hybrid Programming Languages
Hybrid Programming Languages are multi-paradigm languages that not only support basic Object Oriented features but other features of different programming paradigms. Multi-paradigm languages have been around for a while (LISP 1958, C++ 1983) but recently there has been a push to develop true Multi-paradigm languages that bridge the OO/Functional Programming gap; the push has been spurred on by the advent of the multi-core CPU. Programmers can no longer expect single threaded performance to drastically improve with each new CPU release.
Hybrid Languages
Languages such as Scala, Fan, F#(OCaml) and Reia try to address this problem in similar and unique ways.
Scala
Scala or "Scalable Language" was developed by Martin Odersky of EPFL to be a both Object Oriented and Functional language at the same time. Contrary to popular belief the "Scalable" means scalable with the programmer and their skills, ie OO programmers can move to Functional programming and Functional programmers can move to OO approaches. Scala shouldn't be considered a "pure" functional language [LINK TO SCALA BLOG], it can be thought of as an pure "OO" language since every value is an object and every function is a value [LINK TO SCALA INTRO PAGE]. It is a statically typed language that is compiled into bytecode that is compatible with the Java VM with comparable speeds to Java.
Language Highlights
- OO and Functional
- JVM
- Concurrent (Immutable and Actor Model)
- Compatible with existing Java Libraries
- Statically Typed
- Mixin Model
- Mutable and Immutable types
- Tuple return support
Fan
Fan supports an Object Oriented and Functional Programming paradigms. Fan and Scala are often compared and contrasted since they both run on the Java VM. Fan isn't just tied to the JVM though it also supports the .NET CLR (Common Language Run-time) and Javascript. Fan is a "loosely" typed language : method/function responses are statically typed but inner scoped variables are allowed to be dynamically typed. It's an interesting approach since a method's type contract should always be adhered to but within a method forced typing can reduce programming efficiency.
Language Highlights
- OO and Functional
- Portable: JVM, .NET CLR and Javascript
- Mixin Model
- REST namespace
- Concurrent (Immutable and Actor Model)
Reia
Reia is an Object Oriented and Functional Programming that incorporates Ruby/Python-like syntax to the the Erlang BEAM VM. Reia is based upon Erlang's concurrent Actor model. Objects don't share a heap which requires communication between objects to be implemented through message passing.
Language Highlights
- Functional and OO
- Concurrent (Actor Model)
- Objects don't share memory
- Variables can be assigned multiple times
- Hooks to access/write Erlang
F#/OCaml
F# is the officially supported Functional Programming language for .NET with Objected Oriented features. Its a variant of the popular OCaml functional/object oriented language that was developed in 1996. OCaml itself is a variant the CAML language that added Objects, hence the name of Objective-Caml or OCaml. F# has extended OCaml by adding .NET support with improvements to the Garbage Collector (GC) that allows for Symmetric Multiprocessing (SMP) threading. OCaml's GC doesn't allow for SMP threading [LINK to OCAML GC
Language Highlights
- Functional and OO
- Improved GC
- Comparable speeds with C or C++