Lambda the Ultimate

inactiveTopic Shrink-wrap developers: what programming language?
started 6/2/2003; 1:07:37 AM - last post 6/12/2003; 10:49:39 AM
Dan Shappir - Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 1:07:37 AM (reads: 2800, responses: 25)
Shrink-wrap developers: what programming language?
I'm a shrink wrap programmer ... our 16 programs were writtin in vb 3 and it's time for a rewrite ... WHAT LANUAGES ARE OTHER SHRINK WRAP DEVELOPERS USING?

This is a question I've thought about for some time. As R&D Manager for my company I can determine (or at least influence ;-) the PLs used for developing new projects. For server-side apps its mostly a question of target platforms, ease of development and scalability requirements. This is because issues like ease of installation, and hardware and software requirements are often secondary.

With shrink wrap software the situation is very different. We need to support some old systems (think Windows 95 no service packs) and installation must be as simple as possible (so installing VMs and stuff can be a problem). If the software can be downloaded from the web (which in our case often happens) download size can also be very important.

Given all this, do I really have a choice other than C/C++, VB and Delphi?

Posted to critiques by Dan Shappir on 6/2/03; 1:09:44 AM

water - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 1:50:29 AM (reads: 2243, responses: 1)
Well, it seems like Dolphin Smalltalk beats the odds in the Smalltalk category for executable size. I used it a few years ago, and found the development environment really amazing.

Dan Shappir - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 3:00:24 AM (reads: 2280, responses: 0)
Nice!

It's unclear from the executable size table what, if any, other DLLs and such are required by an installation. That is, if your app is 100K but depends on a 10M DLL you must bring along...

Also, I see that it connects to COM, but what about calls to Win32 native APIs, invoking C/C++ code in DLLs via exports, etc. Features such as these are critical for me as we rarely, if ever, start apps from total scratch.

James Hague - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 6:19:38 AM (reads: 2201, responses: 0)
I was going to mention Dolphin Smalltalk as well, but now I'll throw in a mention of Corman Lisp. Sure, it's not like the 5K "Hello World" you'll get from tools like PowerBasic, but it's on par with VB and Delphi. There are also some good Forths in this department: iForth, VFX Forth, and SwiftForth.

The worry with using languages like this is that they're heavily Wintel-centric. Even old tools like Delphi won't generate code for the various processors Windows CE runs on.

Kimberley Burchett - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 7:55:44 AM (reads: 2158, responses: 0)
Does anyone have experience with gcj, the gnu native-code java compiler? It would seem to meet the requirement of producing binary executables (no VM on the client). It also has what I hear is a very slick C/C++ interface, called CNI, as well as supporting the more standard JNI. Doesn't look like AWT will ever be supported on windows, though (link). And I have no idea whether it's production quality yet or not.

Isaac Gouy - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 8:20:33 AM (reads: 2136, responses: 0)
And there's Smalltalk MT 5 - basically a Smalltalk wrapper on Win32.

the Smalltalk category for executable size
console hello world = 53.5 KB

what if any, other DLLs and such are required
STMT5 runtime = 52.2 KB

If you want to use OLE or DirectX or GDI+ or... then you'll need to distribute some more dlls.

what about calls to Win32 native APIs
STMT has direct access to Win32 APIs.
FileStream>>close is implemented as

   WINAPI CloseHandle: m_hFile.
m_hFile := 0

When you don't need Win32 apis, you've gotta love those crazy functional languages ;-)
[Clean console hello world = 31,744 bytes, no runtime; VC = 32,768 bytes]

Patrick Logan - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 8:50:23 AM (reads: 2136, responses: 0)
Doesn't look like AWT will ever be supported...

I have no direct experience but I'm interested to know more about GCJ and SWT on Windows and other platforms. Supposedly works.

Since SWT is open and AWT/Swing is proprietary, this would seem to be the trend to bet on for the best GCJ support.

Chris Rathman - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 10:44:23 AM (reads: 2080, responses: 0)
<language war='on'>

Register me as one that thinks VB should be abandoned. VB3 thru VB6 are dead languages that won't be supported for much longer. Why start a project designed to upgrade your tool set that is outdated even before the first line of code is written? VB.net is a supported language but it's effectively a new language. If you're gonna expend the energy learning a new language and a whole new set of API's, use C#. Programming for .Net is much easier and more natural in C# than in VB.

Since the author says that speed is not an important component, I'd forget anything and everything about C or C++ (and yes they are two totally different languages). These languages have their uses, but rapid application development is not one of them.

Delphi is a great choice, though I never seem to be able to get the time or resource commitment to pursue that particular path.

When I do have a choice these days, I generally choose Python. It's a nice powerful scripting language that plays with others about as well as can be done (e.g. COM & JVM). But then, the author needs to be a little more specific about what they mean when stating "shrinkwrap". What is it about the project that makes VB, Delphi, & VC++ seem to be the only valid languages? RAD? GUI? COM? Compiled? Packaging & Distribution? </language>

Dan Shappir - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 1:55:28 PM (reads: 2008, responses: 0)
What is it about the project that makes VB, Delphi, & VC++ seem to be the only valid languages? RAD? GUI? COM? Compiled? Packaging & Distribution?

Packaging & Distribution are certainly very important considerations, especially for shrink-wrapped software, especially if it is also distributed over the web. Download size still matters, even in this age of broadband.

Also, installing VMs is usually more demanding than installing a standard app. And the installation processes for the VM is out of your hands.

So, what would be the download size for a Python app if I can assume nothing about the target machine? What would be the installation requirements? Will it work if the user has Windows 95 or 98?

My current feelings are that anything beyond dropping an exe file and a couple of DLLs into a directory, and maybe also registering a COM component or two, is too complex. Oh, and ideally the user shouldn't have to reboot.

Matt Brubeck - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 4:18:51 PM (reads: 1972, responses: 0)
Py2exe is an extension to distutils (Python's standard packaging and installation infrastructure). It turns a Python script into a Windows executable, and packages it with a DLL for the Python runtime (and additional DLLs for any necessary Python extensions). You can install by simply copying the resulting directory onto the target machine, or by using standard Windows installation tools to do the same. The result is somewhat bulky (I think the overhead is around 2-3MB uncompressed). I believe there are tricks you can use to cut the overhead to less than 1MB depending on which modules you require.

Scott McLoughlin - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 6:20:33 PM (reads: 1959, responses: 2)
After years of server-side Java programming (and management duties), I recently decided to dive back into client side GUI programming - on Linux/Gnome in particular.

The tools situation is pretty sad! TC++/Win in 1991 provided better GUI C++ programming support than gcc + gtkmm does today. With a Tower of Babel like stack of separately maintained libraries and tools, a paucity of documentation and constant gtk vs. gtk2 confusion - I'm now on 8 different mailing lists and learning to debug autoconf/automake tools just to get past a Gtkmm hello, world app.

What's worse, back in the early 90's there seemed to be reasonable support for Modula-3 and Sather and like languages - system programming languages with gc runtime support. Well, after a few weeks of surfing, I found few gc languages with actively maintained Gtk/Gnome support. It's kind of depressing. I was hoping to use a Lisp or Scheme language, but even Guile/Gtk is something of a mess (I'm on that mailing list too :-) The CMUCL folks seem to have different priorities than "mainstream" Linux desktop application programming.

I've settled on gcc and gtkmm and Python + WxWindows for now. Python is a nice language for many tasks and the documentation is pretty darn good. wxWindows binds to Gtk on Linux and has a very nice API. gcc + gtkmm/gnomemm is pretty much a "by default" choice - if you can call it that.

I'm amazed that there doesn't seem to be a "market" for a type safe, gc supporting but natively compiling systems language/implementation. I really am amazed.

Chris Double - Re: Shrink-wrap developers: what programming language?  blueArrow
6/2/2003; 6:34:42 PM (reads: 1947, responses: 0)
Dan, Dolphin Smalltalk has quite a nice way of interfacing to Win32 calls as well as COM, etc. They have a wizard for generating all the COM stuff from type libraries. To call Win32 or DLL functions you create a class inheriting from a system class and define the FFI interface in the method comments of that class. The comment has a particular format which will result in automatically generated FFI code. This is how Dolphin 4 worked if I recall correctly. Overall I found it very easy to use and had manageable install and executable sizes.

Another option is S# (nee SmallScript http://www.smallscript.net). The executables this system generates are very, very small (3K for hello world) and are blazingly fast. The S# for .NET preview is currently in testing with a small group and will likely be available in the near future.

For cross platform stuff your choices are a bit more limited. I don't have any recommendations in that area based on experience. Maybe one of the cross platform Smalltalks is suitable.

James Hague - Re: Shrink-wrap developers: what programming language?  blueArrow
6/3/2003; 9:59:31 AM (reads: 1757, responses: 0)
I'm amazed that there doesn't seem to be a "market" for a type safe, gc supporting but natively compiling systems language/implementation. I really am amazed.

Ditto, especially one with module support, and not the Fortran-like separate compilation still used by C++. I've also been amazed that GUI building tools have been so bad, with the exception of Visual Basic and Delphi. As much as I hate to admit it, both of these voids are being addressed with C# and .net. To a great extent, the C#/.net is how desktop programming in the 1990s should have been, if it hadn't been derailed in various ways.

andrew cooke - Re: Shrink-wrap developers: what programming language?  blueArrow
6/3/2003; 10:08:49 AM (reads: 1811, responses: 1)
I'm pretty sure I've used InstallShield to install the JRE - we checked and it was OK by the licence. So why not Java? Even if you don't like that language - use one of the many languages that compiles to bytecode and AWT/Swing for the GUI.

(I'm answering two different threads at once here, I guess - one person is objecting to Java and one to no GUI support on clients).

Kimberley Burchett - Re: Shrink-wrap developers: what programming language?  blueArrow
6/3/2003; 10:39:19 AM (reads: 1735, responses: 0)
Oh there's a market all right. That's what's motivating the D language as far as I can tell.

Toby Reyelts - Re: Shrink-wrap developers: what programming language?  blueArrow
6/3/2003; 10:41:57 AM (reads: 1740, responses: 0)
With Java, the "installation process" for the virtual machine can be very simple - you just include it in a subdrectory of your application. Weighing in at about 8M and including implementation for just about everything - i/o, networking (tcp/udp, http, ftp), distributed computing (JRMP, CORBA), windowing, imaging, printing, sound, user-prefs, regex, relational databases, XML, compression, crypto, etc... it's a very good size for internet download or applications delivered on CD.

Sun also just released a new version of the virtual machine which is only a 2M download, which is ideal for users with very slow connections (i.e. 56K or slower). You also have the option of using a native compiler like JET, which compiles Java applications down to a native executable. The consensus seems to be that native compilers don't increase execution speeds, but that they do reduce application startup times and disk size.

If you need special integration with Windows, there are several free and commercial COM bridges, and you can always use JNI (Now I can plug Jace - http://jace.reyelts.com/jace). There is also at least one commercial Java-.NET bridge. Not surprising, considering how similar they are.

About the only drawback I can think of, is that Sun may be withdrawing support for Win95 in their latest virtual machines. What can you expect when even Microsoft doesn't support it?

Paul Snively - Re: Shrink-wrap developers: what programming language?  blueArrow
6/3/2003; 1:56:23 PM (reads: 1695, responses: 0)
Scott McLoughlin: What's worse, back in the early 90's there seemed to be reasonable support for Modula-3 and Sather and like languages - system programming languages with gc runtime support. Well, after a few weeks of surfing, I found few gc languages with actively maintained Gtk/Gnome support. It's kind of depressing. I was hoping to use a Lisp or Scheme language, but even Guile/Gtk is something of a mess (I'm on that mailing list too :-) The CMUCL folks seem to have different priorities than "mainstream" Linux desktop application programming.

<http://www.drscheme.org>;?

Scott: I'm amazed that there doesn't seem to be a "market" for a type safe, gc supporting but natively compiling systems language/implementation. I really am amazed.

<http://www.ocaml.org>;?

Franck Arnaud - Re: Shrink-wrap developers: what programming language?  blueArrow
6/5/2003; 7:04:23 AM (reads: 1438, responses: 1)
I'm amazed that there doesn't seem to be a "market" for a type safe, gc supporting but natively compiling systems language/implementation.

http://www.mlton.org/ x86 SML compiler

http://smarteiffel.loria.fr/ Eiffel to C compiler

http://www.object-tools.com/products/ve/ x86 Eiffel compiler, closed source but free on Linux

Dan Shappir - Re: Shrink-wrap developers: what programming language?  blueArrow
6/6/2003; 2:00:43 PM (reads: 1376, responses: 0)
It may be important to note at this point that there are numerous factors to selecting a PL beyond the intrinsic capabilities of the language itself. I'll limit myself to the more technical ones:

Eiffel to C compiler

I would probably never consider a PL that is implemented in this way because it generally means that there is no debugger support. I know some PLs need to be debugged a lot less than others, and that debugging in itself can be evil, but I like to have a debugger handy just in case.

Other factors include a good IDE, a large collection of existing libraries and frameworks and the ability to integrate with existing C/C++ code (that is, handle C calling convention). Multi-platform support is also a GOOD THING.

Obviously no PL is best at everything, and I've seen lots of interesting suggestions in this thread that I will check out. I also hope that it came across that creating a great dev-env, especially for the client-side, requires a lot more than good PL design (and why so may people are still using C++ or VB (or both) for this type of work).

Lennon Day-Reynolds - Re: Shrink-wrap developers: what programming language?  blueArrow
6/6/2003; 2:56:41 PM (reads: 1319, responses: 0)
I want to second the recommendation for OCaml -- I've finally managed to start really working with the language recently, and the language and development tools are really, really nice.

The library support isn't quite as good as, say, Java or Delphi, but it does have XML and HTTP for network apps, Tk and Gtk for UIs, and a full FFI interface for calling C libraries, along with the usual FP datastructure implementations. Plus, the bundled parser and DSL tools are top-notch, which is great for end-user customization and scripting.

Jordan Katz - Re: Shrink-wrap developers: what programming language?  blueArrow
6/7/2003; 10:25:04 PM (reads: 1384, responses: 0)
Does such a thing (the Java for interface) exist for Common Lisp? Other than JLinker which seems to be ACL specific.

Manuel Simoni - Re: Shrink-wrap developers: what programming language?  blueArrow
6/8/2003; 8:13:37 PM (reads: 1259, responses: 0)
Does such a thing (the Java for interface) exist for Common Lisp?

I haven't used any of these, but maybe http://www.cliki.net/Java helps. You might also want to check out Jabberwocky which is a CL IDE written in Java.

Isaac Gouy - Re: Shrink-wrap developers: what programming language?  blueArrow
6/12/2003; 10:49:39 AM (reads: 1190, responses: 0)
do I really have a choice other than C/C++, VB and Delphi?
Component Pascal - "a modern version of Pascal optimized for component software development" (Syntax more Modula2/Oberon than Pascal: OO + GC)