You should (re)learn a number of languages, not in any particular order. Relearning Python would be very useful, it is a very good all-around scripting language, but I would learn Java if you are thinking of getting a job programming. Likewise, in the job department JavaScript and SQL are things you should have. In this day and age, C and C++ are primarily suited for embedded systems, kernel and driver programming, and working on existing codebases written in those languages (which are large and many). About Haskell, I am personally a fan of that language, even though it's been a while since I've worked in it (mostly because I have been preoccupied with writing Forth systems for the last couple of years); it will surely be a major mind-bender and you will learn a lot from it. There are too many languages for me to talk about in this post, but those are a good few to start with.dɮ the phoneme wrote: ↑Mon Jan 18, 2021 12:59 pm I am thinking about trying to (re)learn how to program. In highschool I took programing classes for a couple years, where I learned C++, and I studied python on my own a bit around the same time. I've forgotten absolutely all of it though. If I did want to pick it back up again, does anyone have any recommendations on what language to learn? I'm inclined to go back to C++, or maybe try and learn C instead, but perhaps something more modern would be better? I don't know... the mathematician in me wants to try Haskell.
Random Thread
Re: Random Thread
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
I agree with most of the recommendations here. (Particularly the endorsement of Haskell!) However, I’m not sure I agree with the recommendation to learn several languages at the same time (or even close together), especially for a beginner. I’d advise finding one language, learning it well, making some applications with it, and only then moving on to other languages — you’ll find that once you know one language really well, you can get started with most others within a couple of days, since most programming languages are pretty similar.Travis B. wrote: ↑Mon Jan 18, 2021 2:49 pmYou should (re)learn a number of languages, not in any particular order. Relearning Python would be very useful, it is a very good all-around scripting language, but I would learn Java if you are thinking of getting a job programming. Likewise, in the job department JavaScript and SQL are things you should have. In this day and age, C and C++ are primarily suited for embedded systems, kernel and driver programming, and working on existing codebases written in those languages (which are large and many). About Haskell, I am personally a fan of that language, even though it's been a while since I've worked in it (mostly because I have been preoccupied with writing Forth systems for the last couple of years); it will surely be a major mind-bender and you will learn a lot from it. There are too many languages for me to talk about in this post, but those are a good few to start with.dɮ the phoneme wrote: ↑Mon Jan 18, 2021 12:59 pm I am thinking about trying to (re)learn how to program. In highschool I took programing classes for a couple years, where I learned C++, and I studied python on my own a bit around the same time. I've forgotten absolutely all of it though. If I did want to pick it back up again, does anyone have any recommendations on what language to learn? I'm inclined to go back to C++, or maybe try and learn C instead, but perhaps something more modern would be better? I don't know... the mathematician in me wants to try Haskell.
As for concrete language recommendations: as I said, I agree with Travis in his assessment of Python, Java, JavaScript, C, C++, Haskell. Other languages to consider:
- C# — Microsoft’s primary programming language. Very similar to Java. (It was one of the first languages I learnt; there’s a good tutorial at https://www.homeandlearn.co.uk/csharp/csharp.html.)
- Swift — Apple’s primary programming language.
- PHP — used to write websites. (This board runs on PHP.) Quite old, but has a corresponding reputation for being horrifically hard to use (though the newer versions are reportedly much better).
- Rust — a relatively new language, but already seeing wide use. Essentially a modern variant of lower-level languages like C and C++.
- Go — another relatively new language seeing wide use.
- TypeScript — a modern dialect of JavaScript with static types. As with Rust and Go, newish but already seeing wide use — sometimes it feels like most current ‘JavaScript’ programs are actually compiled from TypeScript.
- If you want to do mathematical and scientific stuff, you’ll want to learn one of MATLAB, R, Julia, Fortran. I don’t know much about Julia, but the other languages aren’t too pleasant: Fortran is so old that it is considered the first programming language ever created, I’m currently using MATLAB and hating every minute of it, and I hear R has a similar reputation. They’re unavoidable though if you want to do this sort of programming.
Conlangs: Scratchpad | Texts | antilanguage
Software: See http://bradrn.com/projects.html
Other: Ergativity for Novices
(Why does phpBB not let me add >5 links here?)
Software: See http://bradrn.com/projects.html
Other: Ergativity for Novices
(Why does phpBB not let me add >5 links here?)
Re: Random Thread
About learning Haskell as a first language, the main argument for that is that it will teach you how to program functionally without getting stuck in imperative habits that one would learn from other languages. Note that Haskell has a very steep learning curve, and there are aspects of it such as its space/time complexity that are devilishly hard for even experienced programmers to handle at times.bradrn wrote: ↑Mon Jan 18, 2021 6:59 pmI agree with most of the recommendations here. (Particularly the endorsement of Haskell!) However, I’m not sure I agree with the recommendation to learn several languages at the same time (or even close together), especially for a beginner. I’d advise finding one language, learning it well, making some applications with it, and only then moving on to other languages — you’ll find that once you know one language really well, you can get started with most others within a couple of days, since most programming languages are pretty similar.Travis B. wrote: ↑Mon Jan 18, 2021 2:49 pmYou should (re)learn a number of languages, not in any particular order. Relearning Python would be very useful, it is a very good all-around scripting language, but I would learn Java if you are thinking of getting a job programming. Likewise, in the job department JavaScript and SQL are things you should have. In this day and age, C and C++ are primarily suited for embedded systems, kernel and driver programming, and working on existing codebases written in those languages (which are large and many). About Haskell, I am personally a fan of that language, even though it's been a while since I've worked in it (mostly because I have been preoccupied with writing Forth systems for the last couple of years); it will surely be a major mind-bender and you will learn a lot from it. There are too many languages for me to talk about in this post, but those are a good few to start with.dɮ the phoneme wrote: ↑Mon Jan 18, 2021 12:59 pm I am thinking about trying to (re)learn how to program. In highschool I took programing classes for a couple years, where I learned C++, and I studied python on my own a bit around the same time. I've forgotten absolutely all of it though. If I did want to pick it back up again, does anyone have any recommendations on what language to learn? I'm inclined to go back to C++, or maybe try and learn C instead, but perhaps something more modern would be better? I don't know... the mathematician in me wants to try Haskell.
As for concrete language recommendations: as I said, I agree with Travis in his assessment of Python, Java, JavaScript, C, C++, Haskell. Other languages to consider:
Personally, for a ‘first language’, I’d recommend learning one of Python, JavaScript, C#, Swift, Java or Haskell; I’d leave the rest for later, though it’s good to at least be aware that they exist.
- C# — Microsoft’s primary programming language. Very similar to Java. (It was one of the first languages I learnt; there’s a good tutorial at https://www.homeandlearn.co.uk/csharp/csharp.html.)
- Swift — Apple’s primary programming language.
- PHP — used to write websites. (This board runs on PHP.) Quite old, but has a corresponding reputation for being horrifically hard to use (though the newer versions are reportedly much better).
- Rust — a relatively new language, but already seeing wide use. Essentially a modern variant of lower-level languages like C and C++.
- Go — another relatively new language seeing wide use.
- TypeScript — a modern dialect of JavaScript with static types. As with Rust and Go, newish but already seeing wide use — sometimes it feels like most current ‘JavaScript’ programs are actually compiled from TypeScript.
- If you want to do mathematical and scientific stuff, you’ll want to learn one of MATLAB, R, Julia, Fortran. I don’t know much about Julia, but the other languages aren’t too pleasant: Fortran is so old that it is considered the first programming language ever created, I’m currently using MATLAB and hating every minute of it, and I hear R has a similar reputation. They’re unavoidable though if you want to do this sort of programming.
About "mathy" languages, I've looked at Julia and really liked what I saw, even though I've never really used it. Fortran on the other hand shows its age, and is probably not recommended unless one wants to deal with existing codebases written in it. (I remember translating Fortran into Lua (a nice language for scripting if you're writing code in C or C++ and you want to embed scripts in it) of all things, and it was not easy at all.) As for Matlab, I used it in college and really disliked it myself, and I have not heard good things about R (but supposedly for some reason "data scientists" use it a lot).
I agree that Rust is essentially an attempt to do a modernized C++; I have not taken a close look at it, but from what I hear if one is considering starting a new project written in C++, maybe one should consider writing it in Rust instead.
About Go, I have not taken that close of a look at it, but from what I have seen it seems like an all-around, general purpose modern language with good concurrency support. But if one is choosing languages based on concurrency support, one should really be looking at Haskell and Erlang, which both have excellent support for concurrency (even though if straight-line performance also matters, I would choose Haskell over Erlang).
I don't know much about Swift, except that it is essentially to Objective C (a one-time competitor to C++ which was adopted by Steve Job's NeXT, which was then bought by Apple) what Java is to C++, and that it at some point in the past replaced Objective C as Apple's go-to language.
As mentioned, C# is essentially Microsoft's Java; they are sufficiently similar that if one knows one it is easy to learn the other. Note that there are some somewhat interesting languages based on the .NET framework, such as F# (Microsoft's OCaml), but they are all slightly dumbed down and compromised by having to fit in the .NET way of doing things (e.g. F# lacks OCaml's module system), and anyways, why program in F# when you can program in Haskell in all its glory.
If one is going to do web programming, in addition to learning plain JavaScript, I would recommend learning TypeScript along with other languages compiled into JavaScript, such as Haskell (via ghcjs) and Clojure (a variety of Lisp).
Of course I cannot help but mention Forth, as I am working on a Forth-based compiler/operating system for embedded systems. Forth is a really nice language for programming smaller systems, particularly embedded systems, in a highly interactive fashion while having a much smaller footprint and much better realtime properties (due to not having GC) than other interactive languages meant for embedded systems such as MicroPython and eLua. In many ways it is what would result if assembly language mated with Lisp. Of course, it is not a forgiving language, as in Forth one frequently accesses RAM directly, and oftentimes there are no checks for whether IF ... ELSE ... THEN and like are properly balanced and like.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
Oh, and btw, reason to learn statically-typed languages compiled to JavaScript is that raw JavaScript provides very little protection to the programmer, and has all kinds of ugly corner cases in its behavior. More modern JavaScript, i.e. ECMAScript 6, aka ES6, has gotten somewhat better in this regard if you use its new features, but it still is a tough, unforgiving language to work in (it pretends to be forgiving, but in ways that make it easier to write more-difficult-to-debug issues into your code).
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
On the other hand, the argument against it is essentially the same: transitioning to an imperative language can be tricky if you’ve gotten used to Haskell. (We saw an actual case of this on /r/haskell recently.) And this is a problem, since the most widely-used languages tend to be imperative. Personally, I still think Haskell is excellent as a first language, but that’s something to keep in mind.
…Why? I mean, of all the languages one could port from and to, that combination has to be one of the most unlikely. There must be some story behind this.(I remember translating Fortran into Lua (a nice language for scripting if you're writing code in C or C++ and you want to embed scripts in it) of all things, and it was not easy at all.)
Yep, that’s about what I know of Go as well. The other main idea of Go is that it’s really simple: the whole point of Go is that it lacks many features which today are usual amongst programming languages (e.g. generics). Some people love this idea, others not so much.About Go, I have not taken that close of a look at it, but from what I have seen it seems like an all-around, general purpose modern language with good concurrency support. But if one is choosing languages based on concurrency support, one should really be looking at Haskell and Erlang, which both have excellent support for concurrency (even though if straight-line performance also matters, I would choose Haskell over Erlang).
I’m not so sure about this. You can make plenty of good websites using just HTML+CSS+JavaScript; no need to learn anything else if you’re just beginning to program.If one is going to do web programming, in addition to learning plain JavaScript, I would recommend learning TypeScript along with other languages compiled into JavaScript, such as Haskell (via ghcjs) and Clojure (a variety of Lisp).
This is true of all dynamic languages (notably I see Python the same way). On the other hand, you could argue that lack of types is helpful for a beginner because it’s one thing less to keep track of… and certainly this argument seems to be a well-regarded one, as Python and JavaScript are both extremely popular as ‘beginner’ languages.Travis B. wrote: ↑Mon Jan 18, 2021 8:46 pm Oh, and btw, reason to learn statically-typed languages compiled to JavaScript is that raw JavaScript provides very little protection to the programmer, and has all kinds of ugly corner cases in its behavior. More modern JavaScript, i.e. ECMAScript 6, aka ES6, has gotten somewhat better in this regard if you use its new features, but it still is a tough, unforgiving language to work in (it pretends to be forgiving, but in ways that make it easier to write more-difficult-to-debug issues into your code).
Conlangs: Scratchpad | Texts | antilanguage
Software: See http://bradrn.com/projects.html
Other: Ergativity for Novices
(Why does phpBB not let me add >5 links here?)
Software: See http://bradrn.com/projects.html
Other: Ergativity for Novices
(Why does phpBB not let me add >5 links here?)
Re: Random Thread
Java, Python, Rust, Go... pfft, you can guess the rest. But if you're too much of a namby-pamby to learn to write on the bare metal, I might recommend Scala at some point; it has a steep learning curve, but does many things very nicely. Ruby is good, too, if you can cope with its idiosyncracies.
Self-referential signatures are for people too boring to come up with more interesting alternatives.
Re: Random Thread
This is true; writing imperative languages in a primarily functional style's primary downside is that many of these languages are not capable enough to support a functional programming style, even though this is changing.bradrn wrote: ↑Mon Jan 18, 2021 10:00 pmOn the other hand, the argument against it is essentially the same: transitioning to an imperative language can be tricky if you’ve gotten used to Haskell. (We saw an actual case of this on /r/haskell recently.) And this is a problem, since the most widely-used languages tend to be imperative. Personally, I still think Haskell is excellent as a first language, but that’s something to keep in mind.
I needed an algorithm for finding the inverses of polynomials and the only code I could find was written in Fortran - while the scripting language for the application I was working on was Lua, so I ended up translating Fortran into Lua.bradrn wrote: ↑Mon Jan 18, 2021 10:00 pm…Why? I mean, of all the languages one could port from and to, that combination has to be one of the most unlikely. There must be some story behind this.(I remember translating Fortran into Lua (a nice language for scripting if you're writing code in C or C++ and you want to embed scripts in it) of all things, and it was not easy at all.)
I must say I totally forgot that Go lacks generics - for me generics are a must in any modern statically typed language.bradrn wrote: ↑Mon Jan 18, 2021 10:00 pmYep, that’s about what I know of Go as well. The other main idea of Go is that it’s really simple: the whole point of Go is that it lacks many features which today are usual amongst programming languages (e.g. generics). Some people love this idea, others not so much.About Go, I have not taken that close of a look at it, but from what I have seen it seems like an all-around, general purpose modern language with good concurrency support. But if one is choosing languages based on concurrency support, one should really be looking at Haskell and Erlang, which both have excellent support for concurrency (even though if straight-line performance also matters, I would choose Haskell over Erlang).
Sure, you can do this just fine in HTML, CSS, and JavaScript, but static typing does help, especially with larger projects.bradrn wrote: ↑Mon Jan 18, 2021 10:00 pmI’m not so sure about this. You can make plenty of good websites using just HTML+CSS+JavaScript; no need to learn anything else if you’re just beginning to program.If one is going to do web programming, in addition to learning plain JavaScript, I would recommend learning TypeScript along with other languages compiled into JavaScript, such as Haskell (via ghcjs) and Clojure (a variety of Lisp).
JavaScript is worse than Python in this regard. Python at least has strong typing, and more recent versions of it support optional typing, whereas JavaScript has weak typing on top of dynamic typing. All kind of weirdness results from things like how JavaScript treats all of the following as "falsy" if one is not careful:bradrn wrote: ↑Mon Jan 18, 2021 10:00 pmThis is true of all dynamic languages (notably I see Python the same way). On the other hand, you could argue that lack of types is helpful for a beginner because it’s one thing less to keep track of… and certainly this argument seems to be a well-regarded one, as Python and JavaScript are both extremely popular as ‘beginner’ languages.Travis B. wrote: ↑Mon Jan 18, 2021 8:46 pm Oh, and btw, reason to learn statically-typed languages compiled to JavaScript is that raw JavaScript provides very little protection to the programmer, and has all kinds of ugly corner cases in its behavior. More modern JavaScript, i.e. ECMAScript 6, aka ES6, has gotten somewhat better in this regard if you use its new features, but it still is a tough, unforgiving language to work in (it pretends to be forgiving, but in ways that make it easier to write more-difficult-to-debug issues into your code).
- the number 0.
- the BigInt 0n.
- the keyword null.
- the keyword undefined.
- the boolean false.
- the number NaN.
- the empty string "" (equivalent to '' or `` )
Likewise, one has to be very careful about equality operators (in doubt use === and !== not == or !=, even though admittedly we primarily use the latter pair at my work) because they often reinterpret values of one type as being values of another type.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
- quinterbeck
- Posts: 394
- Joined: Sat Jul 21, 2018 12:19 pm
Re: Random Thread
As someone who only really uses SQL, this seems almost scandalous.Travis B. wrote: ↑Tue Jan 19, 2021 9:38 am JavaScript is worse than Python in this regard. Python at least has strong typing, and more recent versions of it support optional typing, whereas JavaScript has weak typing on top of dynamic typing. All kind of weirdness results from things like how JavaScript treats all of the following as "falsy" if one is not careful:
the number 0.
the BigInt 0n.
the keyword null.
the keyword undefined.
the boolean false.
the number NaN.
the empty string "" (equivalent to '' or `` )
Re: Random Thread
That's surprising. I'd heard a "real programmer" could write Fortran in any language.
Re: Random Thread
I am personally bothered by the fact that Oracle treats null and empty string as one and the same.quinterbeck wrote: ↑Tue Jan 19, 2021 4:40 pmAs someone who only really uses SQL, this seems almost scandalous.Travis B. wrote: ↑Tue Jan 19, 2021 9:38 am JavaScript is worse than Python in this regard. Python at least has strong typing, and more recent versions of it support optional typing, whereas JavaScript has weak typing on top of dynamic typing. All kind of weirdness results from things like how JavaScript treats all of the following as "falsy" if one is not careful:
the number 0.
the BigInt 0n.
the keyword null.
the keyword undefined.
the boolean false.
the number NaN.
the empty string "" (equivalent to '' or `` )
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
The matter with Fortran is that it uses call by reference, which most modern languages, like Lua, do not support - and of languages used at the present which do support it other than Fortran, such as C and C++, they use explicit pointers or references. In this case the Fortran code made heavy use of references which made translating the code into purely call by value Lua a major pain in the ass.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
Tables are passed by reference in Lua, though I think the more stylish approach is calls such as "x, y = f(x,y)", which has a syntactic analogue in Matlab.
Re: Random Thread
Multiple return with tuples or like is the approach favored in more modern languages these days; returning via arguments is something found primarily in older languages.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Re: Random Thread
Does anyone else have the impression that the Gulf of Mexico looks like the head of some strange kind of creature?
Re: Random Thread
Kinda reminds me of something out of Aliens.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
-
- Site Admin
- Posts: 2944
- Joined: Sun Jul 08, 2018 5:46 am
- Location: Right here, probably
- Contact:
Re: Random Thread
Scott McCloud noted in Understanding Comics that any blob you draw can be turned into a face just by adding eyes. E.g.:
- Attachments
-
- Bothnia.png (71.53 KiB) Viewed 9768 times
Re: Random Thread
Hmm, if the face is on the right, then I think it's some kind of alien head. If instead the mouth is to the left, then it's Yoshi's head. Also, now it's looking to me as if Australia would fit in there.
My latest quiz:
Kuvavisa: Pohjois-Amerikan suurimmat O:lla alkavat kaupungit
Kuvavisa: Pohjois-Amerikan suurimmat O:lla alkavat kaupungit
- Rounin Ryuuji
- Posts: 2994
- Joined: Wed Dec 23, 2020 6:47 pm
Re: Random Thread
It is a deformed Yoshi crossed with that axe-beaked chicken from that one movie crossed with something from The Dark Crystal.
Cannot unsee.
Cannot unsee.
Re: Random Thread
I can’t not see it with the land as a face: a yawning maw with a big, floppy nose, about to swallow Cuba whole.
Re: Random Thread
I always thought the western part of the Mediterranean Sea looks like the head of a crocodile.
LingEarth the Earthling
she/her
she/her