[FoRK] Top general purpose languages: Practical choices for app logic / presentation & web / server apps
sdw at lig.net
Tue Jan 18 18:09:21 PST 2011
On 1/18/11 2:31 PM, Damien Morton wrote:
> On Tue, Jan 18, 2011 at 4:20 PM, Stephen Williams<sdw at lig.net> wrote:
>> A few years ago, I used Visual Studio with C# / .NET along with Emacs doing
>> a Java half of the project. There are some nice things about Visual Studio,
>> but a lot I did not like. Now, a friend of mine has an uber cool plugin
>> that shows the entire current source file as sort of a thumb-strip on the
>> right. I'm going to imitate that somewhere some day. But otherwise, I'm
>> just as happy in Eclipse as Visual Studio (except perhaps the GUI speed on
> Whats the name of that plugin?
My friend Thierry uses these:
Visual Assist X from Whole Tomato - mostly a code parser
The thumbnail scrollbar is called rockscroll, found here: _http://www.hanselman.com/blog/IntroducingRockScroll.aspx
> Interesting - I have been wanting for a cross platform GUI framework -
> looked at Qt a decade ago, and havent had reason to look again. Will do so.
I highly recommended now. I even had an expensive commercial license years ago, but didn't really dig in deeply until recently. It
is much more evolved than it was, benefiting a lot from open source assistance, Linux KDE usage, and Nokia's mobile plans.
> Its worth downloading Visual Studio Express (the free version of VS) and
> having a play with LINQ, It really is done in a completely general way, and
> people are doing all kinds of incredible things with it. Think of it as a
> language extension that turns an SQL-like sublanguage into parse trees that
> can be processed by the language itself at runtime. The simplest version of
> it does dumbass processing of collections of objects, for example selecting
> a bunch of objects from a collection based on some kind of condition. More
> sophisticated versions leverage its power to provide querying
> of arbitrary data stores, for example, an LDAP store. In other words, yes
> you could do you own RDF query language, by creating a LINQ query provider.
> I found this list of LINQ providers:
> LINQ is something quite unique to C#. The closest thing I can think of is
> some of the LISP meta level programming.
Doesn't seem too difficult to do in Java or C++ in some analogous way. I will take another look soon, especially since I've been
thinking of concise programming issues.
>> In your opinion, what is the current viable range for C#/Mono/.NET? What
>> doesn't work yet? Where can you not use it without headaches (missing key
>> libraries, etc.)? How easy is it to interface with native C++? With Java?
> Last I looked at C#/Mono for windows, it was about 6 or 7 years ago, and was
> very incomplete - I was trying to do web development with Mono, and running
> up against the "not implemented" stuff over and over again.. More recently I
> looked at it for iPhone development, and they had basically written
> an excellent bridge and set about providing the whole Cocoa API
> set, re-jiggered for .NET. For someone who finds ObjC to hurt my eyes, this
> was a real pleasure. I lost interest when Steve Jobs started bopping
> non-approved languages, but apparently the project is going great guns now:
> Mono-Objc, monotouch
> Another place I have been using Mono is as part of the Unity 3D game
> development system, which is most excellent.
I was foiled from installing the newest Unity on MacOS X because they can't handle case sensitive filesystems!
> On windows, interfacing with DLLs is incredibly straightforward. Unlike
> Java, this has been designed in from the start. An example:
I remember something about this. You may be interested in JNA which may be something similar. Some overhead for the interpreted
nature, but seems to handle most cases:
Found it when starting on the Java->C++ work last year.
> Interfacing with Java, I don't know anything about. I suppose you would have
> to work out some kind of JVM to CLR bridge, with the two virtual machines
> co-existing. Ugly.
You could always use JNI from that DLL access capability which gives full access to Java, including full introspection and throwing
new exceptions. Creating a bridge would probably not be that difficult. It is just as easy to call C from Java as to call Java
from C, even with multithreading. And you can share byte arrays with locking to prevent garbage collection movement.
More information about the FoRK