• Welcome to the new COTI server. We've moved the Citizens to a new server. Please let us know in the COTI Website issue forum if you find any problems.
  • We, the systems administration staff, apologize for this unexpected outage of the boards. We have resolved the root cause of the problem and there should be no further disruptions.

Free Programming Language(s)?

When I was looking for my next language after Perl, I first went to Java and then C#. Neither worked out for me, personally.

There's just so much extra complexity and boilerplate you have to deal with. Is this class going to be abstract, static, sealed or partial? What about this method, should it be public or not? How about making it void? No wait, let's make it virtual instead! Maybe we should do the whole thing using interfaces to everything? I get why all those options and restrictions exist, so you can architect very locked down object models and APIs so that you can enforce the way components are used. I suppose it enables some optimizations and efficiencies in the way the code is executed. It's just that for me, all that gets in between me and solving the problems I want to solve.

Honestly, I don't have the patience. I'd rather just build stuff (see sig below). Python lets me do that.

There are other options. Ruby looks really cool. One of these days Perl 6 or perhaps even Python 3.x might be an option (that's a joke. If you choose Python go with version 2.7 - seriously). If you really have to run stuff in the browser, Javascript is your boy. But I went with Python back in around 2002 and never looked back. It's slowly been taking over the world ever since.

Cards on the table, if you really want to do web programming there's a good chance javascript is going to take over that whole industry, server side and all. Node.js is apparently awesome and the future, which I have no reason to doubt. It's just that JS gives me headaches. I've tried the tutorials and it's all just mumbo jumbo. I guess you really can't teach an old dog new tricks and I'm a bit past my prime on the learning whole new concepts from scratch front. If I want to whip up a web service I use the Python Flask library and if it absolutely has to present a web front end I randomly mess with the CSS until it's not too badly broken.

Simon Hibbs
 
Last edited:
Boilerplate: That's what IDE is for. Have not written the stuff in years, Eclipse/Netbeans do the stuff just fine.

public/privat etc.: That is basic learning of a language. Actually quite easy once you understand the idea behind classes and/or modular programming. A decend book helps.

===============

Mono is 2-3 generations behind the current gen .NET Framework since they do a re-engineering.

OTOH: 92+ percent of the desktops do not need Mono since they run Windows/x86 anyway and can use the original stuff. Macies and Pengus are out then but the question is: Are they my target audience?

If writing a standalone program for Windows and the two runner ups - use Java. Otherwise C#/VB# are an option as well.

Webapps do care less since, just make sure not to optimize for one browser too much. And if you target iOS/Andy as well, not too much Javascript
 
Boilerplate: That's what IDE is for. Have not written the stuff in years, Eclipse/Netbeans do the stuff just fine.

public/privat etc.: That is basic learning of a language. Actually quite easy once you understand the idea behind classes and/or modular programming. A decend book helps.

Starbase is a ~10,000 line highly modular, object oriented application and I've never one wished I could declare something to be 'void'. There are some complexities or concepts you can't really avoid in an app of that scale. Inheritance, encapsulation, etc. It's written using the Qt GUI framework so I had to get my head around delegates to get the UI widgets to behave nicely. It's nice to have powerful capabilities there when you need them and not have to think about them when you don't.

Having said all that, C# and Java are amazingly powerful development systems that definitely have their place. We're spoiled for choice for very capable, high quality development environments these days. Its a different world compared to when I was a CS student back in to late 80s. Back then if all your computer came with was a primitive version of BASIC, that's what you wrote programs in and you liked it!

Every now and then I see someone complain that it's not like the good old days when every computer came with BASIC so kids could learn to program. Now we have Scratch, Java, C#, Python and a whole slew of other specialist dev tools all available for free and just a download away.

Simon Hibbs
 
Having said all that, C# and Java are amazingly powerful development systems that definitely have their place. We're spoiled for choice for very capable, high quality development environments these days. Its a different world compared to when I was a CS student back in to late 80s. Back then if all your computer came with was a primitive version of BASIC, that's what you wrote programs in and you liked it!

Every now and then I see someone complain that it's not like the good old days when every computer came with BASIC so kids could learn to program. Now we have Scratch, Java, C#, Python and a whole slew of other specialist dev tools all available for free and just a download away.

Simon Hibbs

In the 80's, there was a wide variety of language choices... Fortran, APL, COBOL, SNOBOL, Forth, Lisp, Logo... plus lots of people programmed in Assembly.

But they weren't free. But people also still actively programmed using assembly code and/or machine code.

Oh, and there is a decent multi-platform 64-bit basic that is largely built on the Q-Basic dialect. QB64.
 
Python is the way to go. As easy as (if not easier than) BASIC and more powerful, too. Has the best GUI support. And interfaces with all the other languages that are worth a hill of beans.
 
Python is the way to go. As easy as (if not easier than) BASIC and more powerful, too. Has the best GUI support. And interfaces with all the other languages that are worth a hill of beans.

Python is a good choice. So is Perl and Ruby.

For ease of use, these scripting languages tend to make it easy to get started, and although there are lots of tools for them, you can get up and going with little more than a command line and a simple text editor.


JavaScript and its relatives (Angular, Dart, Go) tend to be less friendly, but they are useful.


Compiled languages and their toolsets (Java, Scala, Objective C, Swift, C and C++, C# and so on) have steeper learning curves, and are better suited for more complicated tasks once you've gotten your feet wet with smaller projects.
 

Not in any particular positive way; it'll be nice when someone ports it specifically for wine, because so many windows developers rely upon it, and it's been terribly flaky under wine, and the cross-compiles from mono have been rather buggy on the mac side. But it's still not an environment I'd recommend.

Once it's been cross ported and stabilized, we'll see.
 
Been playing around with RunRev's LiveCode Community 6.7...
It's an enhanced, compiling, hypercard clone. It compiles to Windows and Mac "out of the box", and if you have the correct installed, also to iOS and Android.

I think my android SDK got corrupted... it's not working correctly in eclipse, and LiveCode says it's not valid. So I can't tell how well that works. But the very basic tools I need for D&D went together while learning the basics of the language...

It's very human-readable. (Read that as lots of extra typing.)

A snippet of working code inside the spoiler.
Spoiler:
Code:
on calcLabel
   if dd = 0 then
      put "—" into field "TDL"
   else if tdif < de then
      put "Trivial" into field "TDL"
   else if  tdif < dm then
      put "Easy" into field "TDL"
   else if tdif < dh then
      put "Medium" into field "TDL"
   else if tdif < dd then
      put "Hard" into field "TDL"
   else 
      put "Deadly" into field "TDL"
   end if
   if dd > tdif then
      get tdif
      multiply it by 100
      divide it by dd
      set the thumbPosition of scrollbar "DiffBar" to trunc(it) 
   else 
      set the thumbPosition of scrollbar "DiffBar" to 100
   end if
end calcLabel

The Free version is no commercial apps, and GPL required. It's one more option out there.
 
Been playing around with RunRev's LiveCode Community 6.7...
It's an enhanced, compiling, hypercard clone. It compiles to Windows and Mac "out of the box", and if you have the correct installed, also to iOS and Android.
...
The Free version is no commercial apps, and GPL required. It's one more option out there.

GPL apps aren't compatible with the iOS ap store TOS, so you can't release the app there even as free, so not really an option for us iOS users.

- ranty tirrade warning! -

I'm not particularly inspired by the syntax, COBOL all over again. I don't believe verbiage like that makes programming any easier to learn, in fact IMHO it makes it harder because it's much more difficult to see what the code is doing at a glance even if you are familiar with the syntax. It's not as if mathematical notation is unknown outside of the computer programming world. My eldest is 11 years old and she can tell you what 'x = (y *100)/z' means because she learned it at school. The only possible point of confusion might be that we use * instead of 'x' for multiplication, but that's it.

> set the thumbPosition of scrollbar "DiffBar" to trunc(it)

That's just willfully making my life harder. Shouldn't it be something like this anyway?:

set the thumbPosition of scrollbar "DiffBar" to the truncated value of it

compare with:

DiffBar.thumbPosition(trunc(it))

I honestly don't think the above is just easier to read because I'm used to it. I'd love to hear from a non-programmer about that. Yes you need to know that DiffBar.thumbPosition means that thumbPosition is a property of DiffBar and you can change it that way, but you need to understand that relationship anyway to understand either expression. I don't think adding four extra words in different places in the command line makes anything easier to understand. It's just four extra words you need to remember to use in a particular sequence, instead of one character.


can I say any of the following?

make the thumbPosition of "DiffBar" equal to trunc(it)
set the thumbPosition of "DiffBar" equal to trunc(it)
set the thumbPosition of scrollbar "DiffBar" the same as trunc(it)
for scrollbar "DiffBar" make the thumbPosition trunc(it)
set the thumbPosition of "DiffBar" equal to trunc(it)
make trunc(it) the thumbPosition of scrollbar "DiffBar"

If not, then I really don't see the point. Not having a go at you, or really LiveCode itself particularly, but the attitude behind it. When I was a kid I couldn't stand it when adults talked to me in baby language, and I've never talked to my kids like that either. Slowly and clearly, yes, and with simpler grammar when they were younger, but never in a special children's language or way of talking.

These kinds of beginner languages smack of that though. They aren't actualy any more forgiving in their syntax than traditional languages, they just have more syntax. It just happens that the syntax looks more like natural language, but the moment you try to use any of the expressiveness of natural language you'll get your hand bitten off by syntax errors.

Simon Hibbs
 
Ever tried to do anything in Inform 7 (interactive fiction game development system)?

Spoiler:

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman for the first time:

say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
move the insurance paperwork to the player.
 
Ever tried to do anything in Inform 7 (interactive fiction game development system)?

Spoiler:

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman for the first time:

say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
move the insurance paperwork to the player.

Yes. Use inform 6 if you want fine control; inform 7 compiles to inform 6, which then compiles to the object code.

Edited to add: There's something almost, but not quite, elegant about inform 7.
Same with Hypercard and LiveCode. The syntax is rigid, but easily learned.

As for no GPL on the iOS - bull. The provisions of the GPL merely require one to make available the source, and not even for free.
The iTunes Store has served me up several GPL'd softwares - all that they have done is include a link to source code (but not bundle, etc) to meet the requirements.
 
Last edited:
I wish it were not so, but the GPL and App Store terms of service are incompatible. That has not stopped some people from distributing GPL software of the App Store anyway. Apple won't stop you, as long as you follow their rules, but doing so violates a number of stipulations of the GPL, at least according to the FSF.

The problem is that the GPL requires that the software or any derived work be re distributable. That includes binary versions. However users are not able to redistribute binary versions of the app due to the App Store DRM.

If you own the software then what you can do is dual license it and license a non GPL version for the a store. There are also alternative copy left licenses that avoid this issue. However if you're required to GPL your code, you're stuck. It's entirely at the discresion of the LiveCode people as to to what extent they enforce it.


------

There are numerous examples of GPL-licensed software running into incredibly serious distribution issues with Apple's App Store that ultimately resulted in their removal ([1][2][3][4], to name only a few). The Free Software Foundation has also weighed in on the issue ([5][6]):

That's the problem in a nutshell: Apple's Terms of Service impose restrictive limits on use and distribution for any software distributed through the App Store, and the GPL doesn't allow that.
With regard to the GPLv3 in particular, the FSF has also stated their position (emphasis added) [7]:

These two licenses are incompatible. Apple's license says that to write and distribute software for the iPhone, developers have to agree that any freedom users should have to modify and share their software is secondary to the paramount requirement of observing and protecting Apple's DRM system.
The GPLv3 license [8] contains this clause which seemingly confirms the incompatibility:

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.
 
Once you've worked with 6 computer programming languages, you start to know what you like and don't like about programming. So you're real picky about any 7th programming language you decide to learn.

I'm talking about this as a hobby. Those that work as programmers typically have no say in the language used, so don't have a chance to see what else is out there.
 
Or the 20th, in my case, and that's being conservative and only counting families of languages as one each. :cool:

Hilarity ensues when I try to remember how to find the number of characters in a string, and I have to try three or four times to get This Particular Language's syntax correct.
 
It shouldn't take 20 languages to figure it out. That many languages means you been doing programming for awhile and have been forced into using/creating them.
 
Or the 20th, in my case, and that's being conservative and only counting families of languages as one each. :cool:

Hilarity ensues when I try to remember how to find the number of characters in a string, and I have to try three or four times to get This Particular Language's syntax correct.

Hmmm... that reminds me of the two part-time jobs I had years ago with computers using 7 different keyboard layouts. Not fun.
 
A lot of them were dabbling.

The ones I've used professionally for more than a couple months: C, Java (and JSP and JSTL, etc.), ColdFusion/HTML, JavaScript, various shell scripts (DOS batch, sh, ksh, csh, tcsh, bash), various BASIC (probably 6-8 dialects), Perl, various SQL and stored proc languages (ANSI SQL, T-SQL, Transact SQL, PL-SQL, etc.), SQR, FORTRAN

The ones I've used for fun for more than a couple months: PHP, MUSHcode, MU Forth, VBScript

The ones I used only in college: Ada, COBOL, Pascal, Lisp, Modula-2, 11/780 assembler, M68000 assembler, C++

Yeah, you learn what you like and don't like about different languages, but I don't have a single language that is my only tool. There's stuff I want to do in Java, stuff I want to do in a web language (CF, JSP, JavaScript), stuff I want to do in a low-level language (C), stuff I want to do in a DSL (MUSHcode, Excel VBScript), stuff I want to do in a "glue" script (bash), and so on.

I need to learn Ruby.
 
I have a confession to make, I ended up going with Microsoft's Small Basic. Despite not having used it in pretty much 30 years, I found I kept thinking of what I wanted to do in terms of Basic and trying to learn something else was made more difficult. Considering I banged out what I wanted in two days in my spare time, I'm glad I went with it.
 
Back
Top