Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
i'd say "imagine extending logo with a bunch of first-class literals and a rich stdlib so you could do more with it out of the box"

but rebol already exists

i had some hopes for redlang, but then they went in on cryptocurrency, and, well, oof

Adbot
ADBOT LOVES YOU

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
java 37
code:
main {
 out.println("Hello, World!")
}
java 68
code:
println("Hello, World!")
java 97
code:
println 'Hello, World!'
java 126
code:
print hello world

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
i think processing is excellent for teaching programming

easy to install, good performance, low boilerplate but close enough to normal java to provide a smooth transition, a simple environment that doesn't immediately beat you over the head with distractions and unnecessary complexity, you can easily save multi-platform executables

and most importantly you can immediately draw images and play sounds and do lots of interesting things out of the box

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

bob dobbs is dead posted:

just start recommending decker and be done with it lol

in its current form i don't think decker would be very good for general introductory programming courses

i have reference documentation, but an area i'm sorely lacking is a tutorial curriculum for scripting; i plan to work on this

lil and the whole decker environment are very different from a conventional p-lang-and-text-editor workflow and these might inherently cause undue difficulty transitioning to java or python or whatever later

i have had some encouraging discussions with educators about using it in intro game design or narrative design courses, though; the same areas where tools like twine are appropriate

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
awk as an introductory programming language:

  • high performance
  • familiar, conventional c-like syntax
  • quality reference and tutorial materials are available
  • broadly used in professional environments
  • already installed on whatever posix os you're using

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
js is definitely a handy language to know from a "getting stuff done" perspective, and it can be used in conjunction with server-side python to make webapps

likewise c is a handy language to know (at least the rudiments), and again it can easily go hand-in-hand with python

if he doesn't already know some flavor of sql, learning with posgres or sqlite makes sense

if he's interested in game modding, lua is a neat little lang

if he wants to learn a language that'll stretch his general understanding of programming, rather than be directly useful, any of scheme, ocaml, forth, prolog, erlang, rebol, or apl/j/k would surely expose him to new ideas

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
i'm shocked to hear there are only a couple thousand clojure jobs in the world; there's at least a similar order of magnitude of actively employed Q programmers, and clojure is a much more widely-known language. probably only a couple hundred K programming jobs, though, and i know people who work at (or have personally worked at) most of the companies that use it

a basic understanding of sql/relational algebra really is a fundamental skill for any programmer; applicable in a remarkable range of places. not unlike fluency with excel features like vlookups and pivot tables, sometimes just having a grasp of the fundamentals of sql can make you seem like a wizard to coworkers

i think playing with any apl-ish language is really helpful for the way it encourages thinking about manipulating data structures all at once, and building programs directly out of language primitives instead of building up abstractions. my current main project, lil, is an attempt at exploring a synthesis between apl-ish ideas and sql-ish ideas

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
the lengths people are willing to go to in order to avoid using 1-indexed collections never ceases to amaze

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
evil cryptography lib implementers discovering syscalls are randomized:

"it's free real estate entropy!"

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
"b-b-but what if a security vulnerability is discovered in openSSL again? am i going to have to recompile all my applications???"

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

Xarn posted:

My singular point of reference for how well older software for Mac OS works on newer release was when students would upgrade their Macs and then complain that they can't use Valgrind anymore. This happened after pretty much every release.

teaching students to never "upgrade" their operating system sounds like a valuable lesson

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
yeah, awk's approach to scope and its extremely limited ability to work with records/collections are serious shortcomings for general purpose programming

significantly less hosed than bash, but not as much better as one might hope

still, it's the tool that is already in hand, and that counts for quite a bit

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

rjmccall posted:

i wasn’t aware awk had that kind of math processing at all

as far as i am aware, if you want to do non-integer arithmetic in a shell script, the most portable way by far is to invoke awk with your expression; dc and bc aren't available in nearly as many places as some version of awk

as for why you'd need to do that sort of thing in a shell script,

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
nobody has ever seriously considered making a package manager for "awk libraries" or "awk frameworks"

with the exception of the usual GNU extensions traps, there's no dependency hell

you just write programs as one file in terms of the functionality awk gives you out of the box

this is an underappreciated virtue

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
if i could change one thing about awk i think i'd make associative arrays first-class values

it would definitely complicate the implementation, though

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
well obviously when i have to do that sort of thing i use lil because, like many people who choose to post in the p-lang thread, i already have my own bespoke scripting language

i was only speaking hypothetically; adding new features to a fork of awk wouldn't result in them being available in all the places awk already is, so it wouldn't confer any benefit over installing your choice of general-purpose scripting language

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
i think the programming world would be a much better place if lua had beaten python to the punch with respect to notebooks and scientific computing

lua has some warts, but on the whole it's a tremendously simpler, more coherent, and more flexible language than python

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
both python itself and the python ecosystem are extremely hairy and heterogenous

if scientists wrote millions of lines of bad lua it would still be less terrible than millions of lines of bad python because lua can get non-dogshit performance without punting everything to c

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
still slowly refining lil

i added conforming semantics to dictionaries, so i can do things like sum/union a pair of dicts without explicit loops:


generalized amending assignments to work with tables (copy-on-write; tables themselves are immutable values), which is much more straightforward than update for some tasks, especially if the target column varies:


and introduced a like operator for glob matching, which makes it way easier to do 1:1 translations of a lot of sql examples. i've also found this surprisingly handy in practical decker scripts, since it's now much easier to do things like query for all the widgets on a card whose name has a particular suffix or add fuzzy search to crud programs


i also just finished writing Learn Lil in 10 Minutes, which is a nice fast-paced language overview for folks who already know how to program

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
uniform right-to-left precedence is common to Q, J, K, APL, and other languages in the same family (Lil isn't a "pure" APL-descendant, but it does borrow many ideas from K and Q)

with a large number of primitive operators, i think uniform precedence is much easier to remember than a complex tower that tries to "do the right thing" for various operators, and it simplifies the implementation slightly

certainly takes some getting used to at first

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
it took me a long time to appreciate the value of tables in k and q; having them as a first-class datatype really helps simplify lots of things. i've lost count how many times i've written programs in javascript that operated on lists of dictionaries that all have the same keyset by convention, but with a table you can express the same thing and still capture meaningful information in the 0-record case

i think the rise in popularity of dataframes (usually as second-class entities) reflects a strong desire for tabular structures and operations for manipulating them uniformly; perhaps in the coming decades this sort of feature will gain popularity in the same way that many mainstream languages have adopted functional programming features

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
dict is just an operator for creating dictionaries from lists; it's not a literal syntax and certainly not the only way to obtain a dict

i do agree that there are a few situations where flipping the arguments might be more convenient, but i wasn't able to convince myself it was a slam-dunk win

one of the lowest-friction ways of making dictionaries (or nested dictionaries) is to use the "amending" assignment syntax to construct them implicitly
code:
foo.bar:11
foo.baz:22
foo.quux.zami:33
another nice approach is to raze a table, either directly from an insert or the result of a more elaborate query, constructing a dictionary from the leading columns of the table. it's essentially the inverse of how lil normally "widens" lists and dicts into tables to run queries against them

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
a programming language that has absolutely no standalone implementation outside of a specific entire AAA video game is inexcusable

how does a company worth tens of billions of dollars owned by a longstanding enthusiastic plt weenie screw this up

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
pick any technology that doesn't directly involve lisp or sexprs

if lisp weenies had their way when that technology was designed it would be infinitely worse than whatever we have today

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
points at language with a repl: "lisp"
points at language with automatic memory management: "lisp"

(crying) "phil, you can't just point at things and say they contain an ad-hoc, incomplete common lisp implementation"

points at seagull carrying a curved french fry: "lisp"

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
for the things xml is a good fit for, most alternatives are worse

xml has a ton of unnecessarily complex and subtle features that make it hard to work with, though, like custom entities

i think carving out a stricter subset of xml would probably do more to address its issues than replacing nesting with whitespace or angle brackets for parentheses

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
need to save user preferences?

no, you don't

if their preferences were really that strong they could patch the program and recompile it

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

ynohtna posted:

An IDE without sin would only crash, never save.

Immediate Deletion Engine

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
the difference being that asbestos is intrinsically excellent at insulating

c is not intrinsically efficient or mechanically sympathetic for modern machines, it just has a gigantic amount of inertia and platform nepotism in its favor

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
if you've invested the time, effort, and brain matter necessary to internalize a large subset of C++'s outrageous quagmire of complexity you gotta rationalize it somehow

some people invent better languages, some people quadruple down

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

minidracula posted:

As long as I'm talking about stuff I meant to do and haven't done yet, have my raw notes to self about emails I wanted to send to The Array Cast folks from like 2.5 years ago:

not to turn it into a long rant, i think it's very unfortunate that j-style forks and trains seem to be infecting most modern arraylangs and they've come to be seen as central features of the paradigm- at least among vocal enthusiasts

in my mind the truly important features are implicit and abstract iteration, having algebras and generalizations over a small, closed collection of types, and the idea of programming directly in the language instead of constructing abstractions

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

redleader posted:

can't believe i get to quote the most accurate post i've ever made, mere pages later

and if you have the misfortune to compile anything with msvc it will scream and bitch at you to use different functions with a bunch of underscores and extra letters and completely different signatures that are exactly as broken as the standard posix poo poo

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
quite a while ago i proposed, mostly seriously, that awk could be a good introductory programming language

one thing lead to another and i have now written a complete lil interpreter in awk

initially i was worried that building a garbage-collected heap and vm on top of awk would be unusably slow, but mawk is an absolute beast and the end result compares shockingly well to the js-based lil interpreter (which perhaps is a strong argument that i should spend some time profiling and improving js-lil)

awk is fun

Adbot
ADBOT LOVES YOU

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
there's definitely low-hanging fruit for me to improve on without using wasm

as it is, decker currently runs fine on older browsers that don't have wasm support, so it would be a strict downgrade to start relying upon it

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply