Let's talk about programming languages

From Godot Engine - Features :

Script with full freedom

More choices than any other engine.

  • GDScript Python-like scripting language, designed to make games with zero hassle. Learn why our community loves it.
  • Full C# 7.0 support using Mono.
  • Full C++ support without needing to recompile the engine.
  • Visual scripting using blocks and connections.
  • Additional languages with community-provided support for Python, Nim, D and other languages.

Godot is a target for me, though perhaps a moonshot. Though I kinda want to just reuse others’ work and remix stuff. So still a target.

Is GDScript enough like python to benefit from knowing it? Probably. :slight_smile:

I don’t wanna assume our learning styles are the same; and its hard for me to guess without knowing what about Python makes you click with it; and what about C++ doesn’t make you click with it? I also have never compiled any Rust code myself; just admired the project from afar.

That begin said I’d wager you would have to change gears a bit going back and forth. Rust is closer to the ‘C’ family in terms of syntax I think curly braces and all.

GDScript & Godot are in my parking lot to get to aswell. Though people tell me if your primarily doing 2D you get further quicker in Love2D initially.

Also Wikipedia I think might be old there; I think Godot is depreciating some of those scripting options.

I didn’t check Wikipedia, that is from their current features page, which I thought might be more up-to-date. I do recall them dropping something, but I don’t know what! :slight_smile:

Despite not coding in any of these, I’m apparently a language drama watcher, as I track all the communities and leadership of nearly all open source things (that I’m aware of).

I’m glad to hear they are rocking, I didn’t know how long to wait before we knew where that landed.

I just wanna add here that someday I wanna circle back to Pascal. The Free Pascal project seems super cool and fun; and Turbo Pascal was the very first language I learned as a kid; and I never got around to learning the Delphi end of things.

EDIT

ALSO I just wanna add archive.org has a ton of old school basic game programming books.

I’ve been meaning to someday go to town on those. Either with a FLOSS basic interpreter of choice; or with RiscOS Open which ships with a modern and backwards compatible BBC Basic. (Which many of those books optionally target.)

1 Like

Your probably correct then. I noticed a wikipedia drift compared to their documentation a couple weeks ago and so that fact is just rattling around in my brain. I thought they had reduced there languages to fewer; but know they dropped things like lua which also arenot on this list.

Then again aren’t we all? ;-p

2 Likes

I’m not interested in PHP, which is surprising to me. WordPress, Nextcloud, MediaWiki, there are some heavy hitters. But I haven’t learned it yet, so obviously there is something holding me back. It is probably that PHP feels like it fits a very specific function: building web apps.

I know PHP is used for other things, but it is for hypertext. And I’m not looking for that. I get by with WordPress template tags. :slight_smile:

1 Like

I did some BASIC, in MS-DOS and Win 3.1 for Workgroups. :slight_smile: I’m pretty sure it didn’t get further than a bunch of GOTO lines, though I did modify a game of Snakes.

Is BASIC, um, good for anything? :thinking: Aside from fun, learning stuff?

Okay, I went and read up on a whole lot, and kinda have a plan formulating (though I’d love to hear more from folks): learn python.

I mean, I can rattle off game things that use python, and I know a lot less about all the rest. There are tons of things that bug me about python, another indicator I’ve been crushing on it for years. :stuck_out_tongue:

Also, a bunch of folks wrote on the internet that Rust is a horrible first language, and that angered me into thinking about it rationally, and I don’t have anything I want to do with Rust right now. Whereas I want to make all the games. And Rust will get there, when I am ready to build my own server for the thing I am doing. :slight_smile:

And now I’ve said it. So I’m sure the universe will start turning.

Ruby

_why the lucky stiff’s poignant guide to ruby is lovely and there are cute foxes. https://poignant.guide/

“matz is kind so we are kind” “matz is cat so we are cat”

http://rubykoans.com/

Let’s talk about the phrase "let’s talk about [programming language]"

wat: Wat

I wouldnt use it for much outside of that but people could.

I have many thoughts on this all, but am crunched for time so will condense it.

PHP

I used to not like working in it, because it felt old and not hip. However, after PHP7 came out with it’s massive speed improvements, among all sorts of other goodies, I’ve changed my mind. PHP 7.2 is fantastic, and eye-bleedingly fast. I will go as far as to say… if what you’re making is for the web, be it a site, or API endpoint, or online game engine, then it should be in PHP. Unless you need it even faster, in which case…

Go

I haven’t used it in a little while, but the work I did in it felt so fresh. It takes more work to do anything, but holy moly is it fast. See: https://blog.iron.io/how-we-went-from-30-servers-to-2-go/

Rust

I definitely want to check it out, as it appears even faster than Go, and is gaining momentum.

Python

This used to be my white whale. I talked, often of how I’d learn Python so that I could do web server things AND applications. Seemed great. Well, after working with it some at a previous job, I no longer feel that way. Reasons:

  1. It’s not nearly as fast as PHP7. see: https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/php.html
  2. I find how includes work in Python to be less clear than namespaces are in PHP
  3. The lack of curly braces and indentation being a core part of the language just don’t work well for me.
  4. The trickiness to actually get a binary out of it really bothers me. I realized I want my apps to compile.

JavaScript

It’s great for UI/UX on the front end. I think the JS front-end frameworks that push a ton of processing to the client are a form of class discrimination, as if you have a lower end machine/mobile your experience will be pretty crappy. JS for web games is a different thing, obviously you need a lot of processing on client side. But info sites or really lean apps… making the client do a ton of work isn’t cool.

Ruby

I’ve used it a little, I kinda have similar feelings about it vs. Python. If I’m doing web, it might as well be PHP because it’s mucho faster.

Lua

I have the Lua book on my shelf, and do indeed want to learn it at some point, for 2D game reasons. :slight_smile:

1 Like

I wanna throw Haxe out there as a language I keep peeking in at. Both the Neko VM they target and the fact that they support compiling to a vast swath of runtimes is interesting to me. It seems potentially very modern and almost ridiculously cross platform, supporting multiple methods of execution on target platforms.

It seems to forget the BSDs exist though; and the community has jumped graphical frameworks like two or three times in the years ive been following it, which gives it a greater API instability feeling than things like Love2D.

1 Like

Not general purpose, but SPARQL is something I expect to use a lot in the future.

Libre lounge had an episode with the current lead developer of Fennel. Which sounds very clever. It’s a lisp/scheme family language that compiles to lua bytecode. Ive seen chatter about integrated it with love2d elsewhere. Seems interesting and related to my current knot of interests. 30: Fennel with Phil Hagelberg -- Libre Lounge

Been going down a lot of rabbit holes lately. Free Pascal + Lazarus seems to be kinda interesting. Or atleast is so to me, not just because of my nostalgia for Turbo Pascal but also because of their community and their commitment to write once compile everywhere. Theyve done a good job of making object pascal a fist class citizen everywhere, not just desktop applications buarduino style microcontrollers and arm based android devices.

They have a high level widget library that runs native on all major desktops and widget sets, and their rapid design tools, have a plugin available for building android UIs (After fiddling with the google NDK).

I played with Free Pascal + Lazarus a few years back. The RAD tools reminded me a lot of Borland C++ Builder which I suppose isn’t surprising since Grandaddy Delphi was also a Borland product, now both of them are owned by Embarcadero.

Also fun to check out is Racket, a Scheme + batteries focused on building new languages and making it easy to make small languages for specific purposes (DSLs). I highly recommend Matthew Butterick’s Beautiful Racket, and a good place to start is actually one of the Appendices “Why Racket? Why Lisp?”. The book is typeset with Pollen a DSL Butterick wrote himself because he was unsatisfied with other typesetting tools.

1 Like

I’ve played around a bit with Chicken Scheme, and keep meaning to circle around to either Racket or GNU Guile at some point. Though fennel has caused me to glance it’s way too.

I like these shemey-lisps, but its also so different in some respects from what im used to, its slow going for me.

I’d been fascinated by lisps and schemes for a long time, but my real introduction to using a lisp on the regular was Emacs Lisp. Emacs really is a wonderful environment to learn to love lisp because if you’re already attached to the editor, writing Lisp not only lets you configure Emacs, it lets you write useful programs that you can actually use day to day, binding them to keys or creating modes for your work.

One recent use I had beyond configuration was writing some tools that could be used to supercharge what would normally be basic snippets from the YASnippet library

Examples:

  • a keyword mage-namespace that when tab-completed expanded into the the properly formatted PSR-4 namespace by recursing up the directory tree to <project root>/app/code and appending directory names below that as parts of the name space. So a new file at <project root>/app/code/TFAW/Sales/Plugin/ would get the namespace \TFAW\Sales\Plugin

  • a keyword mage-model-interface that when tab-completed prompted you for field names and types and used that list of fields to generate a model interface with type-annotated getters and setters.

  • mage-model-interface's brother mage-model-implementation which creates a model class extending the appropriate Magento base class and implementing a similarly named interface, with the fields you specified becoming type-annotating doc-blocks, a type-annotated constructor, and getters and setters. The cool bit was that it remembered the last field-list you entered for either mage-modelinterfaceormage-model-implementation` since doing one right after the other was such a common operation, so it would offer the previous list you typed as a default value to just accept by hitting RET and continuing the completion of the snippet

I wrote a few others but they all depended on similar ingredients to those three. Emacs Lisp has its funny corners and weird edges and abandoned dusty batteries, but it also has such useful debugging tools that I miss in my day to day work. Since the editor is also the program you’re modifying and also the compiler and also the debugger, the integration is so smooth that sometimes I accidentally spend too much time trying to debug minor annoyances for tasks that would only take a minute or two to do manually. Debugging is as easy as navigating to the problem function, evaluating the function with edebug-defun (which evaluates a function as eval-defun would but also adds debugging symbols), setting a breakpoint and finding the bug. Once the bug is found, you can edit the function, eval-defun (C-x C-e) and the problem is fixed. You never had to restart the editor or re-compile.

1 Like

That typesetting tools keep getting created by programmers printing their books just tells me: some programmers can’t separate concerns…

Also, there should be a special award for doing so. :nerd:

2 Likes