6 ms·
What would you prefer? A language that doesn't need a runtime, like C? A language that has only one available runtime, like node.js? A language that has a choic
by waterlion 13y ago
What would you prefer? A language that doesn't need a runtime, like C? A language that has only one available runtime, like node.js? A language that has a choice of runtimes but there are incompatibilities between them like Python or Ruby? A language that has a choice of runtimes from a choice of vendors like Java?
- tomkludy 13y agoI'd like something running on the CLR. Not because I think the CLR is very special; just because I really like Haskell but I have to work within a large ecosystem of existing .NET code.
- callmecosmas 13y agoWhy not F#?
- pacaro 13y agoA good question, remember Don Syme and Simon Peyton Jones even work in the same building...
- tomkludy 13y agoI've been playing with it some. It's nice, but I still prefer Haskell. I want to be able to separate pure from impure code, but F# doesn't seem to enforce that. (Unless I'm missing something?)
- Touche 13y agoIt doesn't. In fact, F# feels like it started off as a fairly pure functional language but some Microsoft PM said "it has to support every API in .NET" and so a lot of OOP stuff was bolted on the side. It feels like 2 different worlds in one language. You can easily get by never using the impure stuff but it's still there, taking up space.
- shadowfox 13y agoF# has its origins in OCaml which has the same set of properties (ability to write impure code and has an object system, albeit one that not many people use). F# replaced that object system with the .NET one.
- MichaelGG 13y agoF#'s design was almost completely handled by Don Syme, in MS Research Cambridge. It is highly unlikely some PM jumped in and insisted it must do things. The OOP part is rather coherent; I'm not sure what's bolted on - any examples? In fact, things like object expressions do parts of OOP even better than Java/C#. Overall the syntax for OOP is rather concise and neat. Having proper interop with .NET and hence the OOP is ... pretty key to making a successful .NET language. Otherwise you lose one major point of being able to use .NET libraries.
- Touche 13y ago> The OOP part is rather coherent; I'm not sure what's bolted on - any examples? In fact, things like object expressions do parts of OOP even better than Java/C#. Overall the syntax for OOP is rather concise and neat. I'm saying I'm not sure why the OOP exists at all. Someone else pointed at that OCaml has those elements as well, and maybe that's the reason. Just in my own use, I never felt the inclination to use the OOP at all, and their existence felt like this part of the language that I didn't understand, didn't want to understand, but was there nonetheless.
- Touche 13y agoA runtime that can be used for a wide-variety of types of applications. JVM can really only be used for writing web servers and possibly daemons.
- waterlion 13y agoGive an example.
- kasey_junk 13y agoand Android apps...
- Touche 13y agoAndroid doesn't run JVM.
- kasey_junk 13y agoNot technically, but practically speaking, you compile to JVM code & then it gets translated. This makes targeting the JVM & Android trivial.
- Touche 13y agoIt's not trivial, this is why there are no JVM languages that really run well on Android.
- biafra 13y agoWhat do you mean by that? I would say compiled Scala runs well on the Dalvik VM. All languages that do not need to generate (or load) class files at runtime should work well on Android. And that is because Dalvik does not run class files.
- Touche 13y agoSo then why don't we see more non-Java Android apps in the wild? We can only go off of open source apps, I've looked at quite a bit of those and have ran across only a couple that don't use Java.
- icefox 13y ago> A language that has a choice of runtimes from a choice of vendors like Java? That is like saying that we should developer Windows apps because you can always deploy using wine on other systems.
- waterlion 13y agoI'm not sure what you're saying. If you're calling into question the portability of Java, then I can run the same bytecode on Windows, Mac, Linux, the browser (in theory) and, with a little transpiling, my Android. If you're saying that that priority of decision drivers is backward, then I disagree: If you want to develop a Windows app you start by saying "I want to develop something on Windows because my clients/customers run Windows". Then you work out how to do it on Windows. If you start out saying "I want to write an app that does X" then you have the freedom to choose what balance of priorities affect you, including whether or not portability matters.
- chc 13y agoI believe he's trying to criticize Java for being owned by Oracle. The implication appears to be that alternative implementations are just compatibility layers for Oracle's technology like WINE is for Windows. (For the record, I don't particularly agree with this. It seems like you could level the same criticism at nearly any language that has one person or stable group controlling it — for example, you could just as validly call Rubinius "WINE for Ruby".)
- lmm 13y agoDo the MRI people own Ruby trademarks and patents? Did they use them to torpedo a free Apache implementation of Ruby?
- chc 13y agoIIRC Harmony was scuttled primarily because of OpenJDK — Harmony's major corporate sponsor switched its support to OpenJDK, and shortly thereafter the Harmony committee unanimously agreed to put the project in the attic. I don't think Oracle ever actually went after Apache.
- gngeal 13y ago"A language that doesn't need a runtime, like C?" The language perhaps doesn't, but most actual programs do. I'm definitely not going to write my own standard library just because I can.
- waterlion 13y agoI wasn't advocating one choice or another. It's just the person I replied to just said "JVM ugh", which isn't necessarily reasonable.
- Peaker 13y agoA "Runtime" and a "standard library" are different things. There are a lot of (annoying to install) libraries for C.
- gngeal 13y agohttp://en.wikipedia.org/wiki/Microsoft_Windows_library_files#MSVCRT.DLL_and_MSVCPP.DLL http://en.wikipedia.org/wiki/Microsoft_Windows_library_files... Now what could the "RT" part possibly mean?
- Peaker 13y agoMS are unique in calling their C library a "Runtime library". Commonly, a support system that does GC and other automatic management for managed languages is called a "runtime", and the various common functions available to C program are called a "standard library". The difference is that in C, you can write a program that uses none of the standard library at all, whereas a managed program will use the "runtime" for doing anything at all.