Poll of the Day > I'm thinking of learning programming or whatever. Any recs?

Topic List
Page List: 1
PK_Spam
09/11/18 12:47:40 PM
#1:


I think MIT has a free programming class online for Python. Idk about any of that stuff though, is that a good starting point? Ive literally never coded or programmed anything in my life.
---
... Copied to Clipboard!
Kyuubi4269
09/11/18 12:49:32 PM
#2:


Figure out what you want to program first.
---
Scloud posted...
Its like he wants two things at the same time.
... Copied to Clipboard!
PK_Spam
09/11/18 12:51:45 PM
#3:


I genuinely have no idea what I even want to program >_>

I think it was RC who recommended I learn to code/program because it was a marketable skill, but I dont know exactly what any of it is.
---
... Copied to Clipboard!
kind9
09/11/18 1:16:57 PM
#4:


Hop on Linux and learn C and shell scripting. Python is great so learn that too.

I'm half joking. It really depends what type of programs/apps you want to develop.
---
... Copied to Clipboard!
jramirez23
09/11/18 1:21:47 PM
#5:


I think maybe the best starting point might be a community college class that is an "introduction to programming in whatever programming language." I started out with C++ and Python. Otherwise, I've used Codecademy (good for basics). I've also heard good things about freeCodeCamp but I don't know if it will be helpful for someone just starting out.
---
I consider it completely unimportant who in the party will vote, or how; but what is extraordinarily important is this who will count the votes, and how.
... Copied to Clipboard!
Dikitain
09/11/18 1:25:31 PM
#6:


Python is a good starting language, and if the class is free then go for it. Best way to learn is to use it though, so just find a simple program you want to make (like a program to sort your music files) and just make it.
---
I am a senior software engineer. If you see me post here, I am tired of writing TPS reports.
... Copied to Clipboard!
Chewster
09/11/18 1:35:21 PM
#7:


Good luck with that, I've been "thinking of learning programming" for like four years and not making much progress. I mean, I've learned some (and already knew some from school), but I don't feel like I'm nearly to the point of being marketable with it. Coding jobs are still in demand but I think we need to stop pretending like it's this "best kept secret" career field anymore, you're gonna have a lot of competition.

Assuming you don't know anything already, I feel like it might be good to start with fundamentals, like learning the concepts of data structures, algorithms, objects, etc., though any people who have successful programming careers can feel free to correct me if that's bad advice. I just know that when I learned programming, we kind of jumped into the language more without the fundamentals, and now I have bad habits of just trying to get my projects functional, without focusing on "good practice". The good practice stuff isn't super important if you just want to make things for personal use, but if you're trying to make a portfolio you want your code to look good, not just execute the bare minimum goal. And, even though a lot of that stuff just seems almost strictly academic to me, it comes up a lot on coding interviews/tests so it's good to know.
... Copied to Clipboard!
#8
Post #8 was unavailable or deleted.
Zeus
09/11/18 1:49:02 PM
#9:


I also kinda want to learn programming to design a game. Not sure if Python would be any good for that, though.
---
(\/)(\/)|-|
There are precious few at ease / With moral ambiguities / So we act as though they don't exist.
... Copied to Clipboard!
DPsx7
09/11/18 5:49:44 PM
#10:


Different languages have different strengths. Not only that sometimes it's easier to learn something simple so you can get the basics down before worrying about a more complex language.

If your goal is to develop games maybe you want to skip the programming and borrow an existing engine. Then you can learn modeling or animation. I guess my point here is coding is rather boring and you won't see results for a long time. Using the variety of tools out there you'd be able to progress quicker.
... Copied to Clipboard!
TheWorstPoster
09/11/18 5:56:03 PM
#11:


Start with Fortran
... Copied to Clipboard!
Amuseum
09/11/18 6:01:14 PM
#12:


easiest to start with webpage stack: HTML, CSS, Javascript. you don't need to download anything, waste time compiling, and your product work in any device big or small. Web design is also a lucrative field. You can also make HTML5 games.

Then move on to server side: PHP, SQL, networking infrastructure, hosting, etc.
---
Ergonomic keyboard layouts for Android https://goo.gl/KR1vK6
Shena'Fu's Online Card Creator https://bit.ly/sfocc
... Copied to Clipboard!
Sahuagin
09/11/18 9:17:50 PM
#13:


Java and Python would be my recommendations for a first language to learn (Java especially, I don't know Python enough to say which of the two is better).

not sure if it would complicate things too quickly, but I suspect it might be a good idea to learn about the stack and the heap and how they work right away. what makes programming hard when you're learning is that there's always a sort of "invisible ambient context" in the background, and if you have no understanding or awareness of it, it makes it very hard to reason about what you're doing.

Amuseum posted...
easiest to start with webpage stack: HTML, CSS, Javascript

I could be wrong but my gut instinct is that JavaScript is easily among the worst languages to learn first. it's a nightmare of a language when you don't already know how to program. you should master a sane language first.
---
... Copied to Clipboard!
Questionmarktarius
09/11/18 9:48:23 PM
#14:


How simple do you want to go?
... Copied to Clipboard!
Chewster
09/11/18 9:59:46 PM
#15:


Sahuagin posted...
I could be wrong but my gut instinct is that JavaScript is easily among the worst languages to learn first. it's a nightmare of a language when you don't already know how to program. you should master a sane language first.


In what way(s) is JavaScript a "nightmare"? Not saying you're wrong, I just genuinely don't know what you mean, but you seem much more well-versed than me in programming.

I would think in some ways it's easier, like how you don't have to define the variable types. I think beginners would prefer that, though maybe it would get you into bad habits and then make it harder to do something like C where the types have to be defined more strictly.
... Copied to Clipboard!
Questionmarktarius
09/11/18 10:04:06 PM
#16:


Chewster posted...
In what way(s) is JavaScript a "nightmare"? Not saying you're wrong, I just genuinely don't know what you mean, but you seem much more well-versed than me in programming.

Well... there's a reason jQuery exists.
Vanilla js can get pretty convoluted when trying to do things that should be simple, and a gigantic pile of confusion when trying to do some really freaky shit to the DOM.
... Copied to Clipboard!
Sahuagin
09/11/18 10:43:12 PM
#17:


Chewster posted...
In what way(s) is JavaScript a "nightmare"?

well it has all kinds of small little problems and weird ways of doing things. you can live with them if you learn about them and know how to work around them, but I sure wouldn't want to learn it as my first language.

to be clear, JavaScript is in a lot of ways a fantastic language. but there's a reason one of the most famous books written about it is called "JavaScript: The Good Parts".

some examples include: (note: all of this is in some ways opinion. none of it is that bad if you know how it works. it's learning it as a first language that I personally would not want to do.)

- prototypal inheritance; objects "inherit" from other objects (no classes, although newer versions are starting to have them) (this can be a good thing when you understand it) (basically, every object has an invisible reference to its parent object. (note: OBJECT not class). if you change the parent object, you change the inheriting objects, at runtime. can be very useful, but also very dangerous.)

- no namespaces, (have to manually implement them)

- no encapsulation, except by manually implementing it with closures (similar to the namespaces problem)

- no errors on referring to something that doesn't exist; instead it clobbers the global "window" object.

- type coercion (what's 1 + "5"? "15".)

- everything, even arrays, are actually hash tables (a good thing when you understand it and know how to use it, though arrays are always going to be weird since they're not really arrays)

- even though it's a functional language, functions don't bind "this" intuitively when passing functions as arguments

- has two "no value" values, undefined and null. everything defaults to undefined.

- auto inserts semicolons for you. this means in some cases, where you meant to break a statement into more than one line, it will insert a semicolon "for you" on the first of those lines, breaking your statement. this most often occurs with return, which if left by itself will invisibly turn into "return;", even though you have a complex statement to evaluate below that.

- the only number type is "double"

- curly braces don't actually introduce a scope

- similarly variables are "hoisted". this means (IIRC) an inner variable with the same name as an outer variable doesn't make a new variable, it's the same variable, but no error indicates a problem.

etc.etc.

Questionmarktarius posted...
Well... there's a reason jQuery exists.

yes, but to be pedantic, note that JQuery is (I think) mostly to fix the DOM, it doesn't do much for JavaScript the language. many of the problems, though, do have fixes or improvements in ECMAScript 6 and beyond (which are becoming the norm).
---
... Copied to Clipboard!
Chewster
09/11/18 10:51:46 PM
#18:


See, I barely understood any of what you said (and of most of what I did understand, it's not like an example of why that matters immediately comes to mind).

Is that kind of stuff important to know if you want a low-level coding job?
... Copied to Clipboard!
Questionmarktarius
09/11/18 10:54:02 PM
#19:


Chewster posted...
Is that kind of stuff important to know if you want a low-level coding job?

You could probably squeak by on PHP or something, but knowing what all the OOP technobabble means is pretty useful even then.
... Copied to Clipboard!
Sahuagin
09/11/18 10:56:38 PM
#20:


Chewster posted...
Is that kind of stuff important to know if you want a low-level coding job?

if you try to get a JavaScript job, they will (or should) ask you loaded questions that will indicate your knowledge of these kinds of problems. most of these things can be used for or against you (for you if you understand them, against you if you don't).

(if by "low-level" you mean like, a junior position, it might not be so bad. I don't actually have much experience looking for programming jobs since I basically "grew into" my current job.)

Chewster posted...
I barely understood any of what you said

sorry, typing it all out is not a very efficient way to communicate.
---
... Copied to Clipboard!
Questionmarktarius
09/11/18 11:03:35 PM
#21:


Sahuagin posted...
if you try to get a JavaScript job, they will (or should) ask you loaded questions that will indicate your knowledge of these kinds of problems. most of these things can be used for or against you (for you if you understand them, against you if you don't).

There's very rarely a need for going full-OOP with javascript, unless you're doing things that should have done server-side anyway.

Sahuagin posted...
note that JQuery is (I think) mostly to fix the DOM

If you're using jQuery for some purpose that's not messing with the DOM, then may God help you - Woz certainly won't.
... Copied to Clipboard!
Sahuagin
09/11/18 11:09:06 PM
#22:


Questionmarktarius posted...
There's very rarely a need for going full-OOP with javascript, unless you're doing things that should have done server-side anyway.

well, I write whole single-page applications in JavaScript (actually TypeScript), with only a few AJAX calls to pull some data from the server at program start. the whole thing runs otherwise completely disconnected from the server so that the device can roam free.

most of what I listed didn't have anything to do with "OOP" anyway
---
... Copied to Clipboard!
Questionmarktarius
09/11/18 11:14:54 PM
#23:


Sahuagin posted...
well, I write whole single-page applications in JavaScript (actually TypeScript), with only a few AJAX calls to pull some data from the server at program start. the whole thing runs otherwise completely disconnected from the server so that the device can roam free.

Now I'm curious what the use-case is...

Sahuagin posted...
most of what I listed didn't have anything to do with "OOP" anyway

That does seem like the sort of "trap" that would pop up in an interview, but more likely in a class pop-quiz where it's explicitly stated to encapsulate or something in a language that wasn't really meant to do so.
... Copied to Clipboard!
Sahuagin
09/11/18 11:16:19 PM
#24:


Questionmarktarius posted...
If you're using jQuery for some purpose that's not messing with the DOM, then may God help you - Woz certainly won't.

IIRC it had a handy .each function for enumerating collections, and it has an easier ajax call or something, but I don't use it. I'm not an expert with it and don't know the full extent of its features. I do use jquery-ui a lot, but for regular jquery, I think recently I am mostly just using it to construct elements. $("<span>") and stuff. I construct the UI from scratch and hang on to all of the element references myself, so I don't really have a need anymore to actually query anything.
---
... Copied to Clipboard!
Sahuagin
09/11/18 11:26:46 PM
#25:


Questionmarktarius posted...
Now I'm curious what the use-case is...

mobile data-entry. inventory and things like that.

Questionmarktarius posted...
That does seem like the sort of "trap" that would pop up in an interview, but more likely in a class pop-quiz where it's explicitly stated to encapsulate or something in a language that wasn't really meant to do so.

well... note that JavaScript IS "object oriented". it's not that it isn't OOP, it's that it doesn't have "classical inheritance"; it has prototypal inheritance which is super-weird and something I still haven't fully wrapped my brain around. otherwise it's definitely object oriented, where almost everything is an object (the only things that aren't objects are (I think) unboxed numbers (which are all doubles), unboxed strings, and unboxed booleans).
---
... Copied to Clipboard!
Questionmarktarius
09/11/18 11:36:21 PM
#26:


Sahuagin posted...
well... note that JavaScript IS "object oriented". it's not that it isn't OOP, it's that it doesn't have "classical inheritance"; it has prototypal inheritance which is super-weird and something I still haven't fully wrapped my brain around.

Think of js 'objects' as simple collections, and the whole mess starts making much more sense.
It's about three quarters of a 'real' language, that behaves like it was created in 1960 or something.
... Copied to Clipboard!
Sahuagin
09/11/18 11:46:03 PM
#27:


Questionmarktarius posted...
Think of js 'objects' as simple collections, and the whole mess starts making much more sense.

well, they're hash-tables, which is slightly different

Questionmarktarius posted...
It's about three quarters of a 'real' language, that behaves like it was created in 1960 or something.

well it IS an amazingly awesome language. it's a functional language with closures, which is awesome. the "everything is a hash-table" thing is weird but cool. the lack of encapsulation can be worked around using namespace/closure patterns. the prototypal stuff I'm not too sure about. I mostly ignore that part.

and then, ECMAScript 6 improves it in a ton of ways, including classes, and TypeScript makes it even better, with even better static typing than C#. (I think TypeScript now must be the single most complex static typing system ever built.)

and other things, too. it has single-threaded asynchronous code. it has Promises, but even better it has async/await, so you can write readable asynchronous code. in some ways it's the BEST language, it's just terrible to learn first.

(a good link for how ES6 makes it better is here: http://es6-features.org/)
---
... Copied to Clipboard!
Questionmarktarius
09/11/18 11:47:49 PM
#28:


...are we having a nerd fight?
... Copied to Clipboard!
Sahuagin
09/11/18 11:49:12 PM
#29:


no, I just like talking about programming 8)
---
... Copied to Clipboard!
Magus 10
09/12/18 1:11:05 AM
#30:


Sahuagin posted...
(I think TypeScript now must be the single most complex static typing system ever built.)


You ever seen Haskell?
---
Internet = Tube0 + Tube1X + Tube2X^2/2! + Tube3X^3/3! + Tube4X^4/4! + ...
... Copied to Clipboard!
Amuseum
09/12/18 1:59:02 AM
#31:


lmao it's the jaded programmers who don't understand what a newbie needs. they don't need to know shit like OOP and encapsulation, that even vets barely touch. they just need to know basic variables and arrays, how to loop, how to make and call functions, how to print out text to the screen.
---
Ergonomic keyboard layouts for Android https://goo.gl/KR1vK6
Shena'Fu's Online Card Creator https://bit.ly/sfocc
... Copied to Clipboard!
Sahuagin
09/12/18 2:33:34 AM
#32:


Magus 10 posted...
You ever seen Haskell?

I have programmed in it a bit, but not tons, and that was a very long time ago. I know it's the ultimate functional language. I didn't really think of it before as having a complex type system, but you're right to point it out. I don't think it has as good IDE support as TypeScript, or as useful a platform, but you're right that it's probably a bit more complex of a type system than TypeScript.

It's a pure functional language, which is good in ways, but also very restrictive.

It has partial function application and currying.

If I recall, it has "higher order generics", whatever they're called. <looks it up>. yeah, called higher kinded types, or type constructors, or also functors, I think. that's a pretty rare feature.

It doesn't really have classes, so similar to JavaScript, to get encapsulation you have to use closures, and I'm not even really sure how closures work in Haskell.

I'd probably try it out if you could write actually useful programs with it (sorry, not trying to be elitist, correct me if I'm wrong). the notorious issue with pure functional languages is that they are pure, which means no side effects. they basically run like mathematical equations; single input, single output. they supposedly get around the I/O and UI problem with monads, but not terrifically. they're sort of more algorithmic (or well, functional in a mathematical sense, which is what they are). you'd more write a cryptography system in haskell than a desktop application.
---
... Copied to Clipboard!
Sahuagin
09/12/18 2:42:40 AM
#33:


Amuseum posted...
lmao it's the jaded programmers who don't understand what a newbie needs. they don't need to know shit like OOP and encapsulation, that even vets barely touch. they just need to know basic variables and arrays, how to loop, how to make and call functions, how to print out text to the screen.

HTML + Javascript is the most universally accessible languages. your end product is accessible by the entire world with no additional software or OS requirements. also the easiest requirements for the developer: all you need is text editor and browser.

ok, but you probably aren't writing very large systems with a text editor and no encapsulation. I don't know what "vets barely touch encapsulation" is supposed to mean, I was actually just accused the other day of "violating encapsulation" for having two properties on two objects refer to the same object.

encapsulation is just hiding information so that only the relevant bits are exposed. if there's no option to hide information, then it all has to live together in one big pile. it turns into a mess very very quickly, which is why you need namespaces, and why you need to hide information that's not relevant to things outside.

also in terms of reasoning, if something has limited scope, you know you can change it without breaking anything a few hundred source files down. if everything in your entire system is public and global, you can't reason properly about what is being affected by your changes. scopes, namespaces, and private members exist for a reason.

but, in "vanilla" JS (ES5) you just need to use closures to obtain this which are equivalent (and modern JS is starting to have classes anyway).
---
... Copied to Clipboard!
jramirez23
09/12/18 3:15:10 AM
#34:


Zangulus posted...
The basic idea to programming:

What do I want to make and in what language?

Then you start breaking it down.

I want to make a basic side scrolling game.

Okay? What do you need to know how to do? Okay, I need a window.

Okay, how do I make a window.

Start searching for how to make a window. There are literally thousands of websites dedicated to basic learning on things like this.

Okay, now I have a window. What do I want to do now? I want to write some text.

Etc.Etc. Etc.

This way of learning really reminds me of learning how to play an instrument on your own. Its also pretty hard for some people to learn like this. Personally, I would need more structured guidance.
---
I consider it completely unimportant who in the party will vote, or how; but what is extraordinarily important is this who will count the votes, and how.
... Copied to Clipboard!
Joshs Name
09/12/18 3:17:56 AM
#35:


Here's something cool that I've come across that might interest you. It's no good on it's own but it might be something that could help with goal-orientation.

But I don't know, I'm not a teacher.

https://imgur.com/a/sAdwXCP
---
So I was standing still at a stationary store...
... Copied to Clipboard!
Magus 10
09/12/18 4:23:24 AM
#36:


Sahuagin posted...
Magus 10 posted...
You ever seen Haskell?

I have programmed in it a bit, but not tons, and that was a very long time ago. I know it's the ultimate functional language. I didn't really think of it before as having a complex type system, but you're right to point it out. I don't think it has as good IDE support as TypeScript, or as useful a platform, but you're right that it's probably a bit more complex of a type system than TypeScript.

It's a pure functional language, which is good in ways, but also very restrictive.

It has partial function application and currying.

If I recall, it has "higher order generics", whatever they're called. <looks it up>. yeah, called higher kinded types, or type constructors, or also functors, I think. that's a pretty rare feature.

It doesn't really have classes, so similar to JavaScript, to get encapsulation you have to use closures, and I'm not even really sure how closures work in Haskell.

I'd probably try it out if you could write actually useful programs with it (sorry, not trying to be elitist, correct me if I'm wrong). the notorious issue with pure functional languages is that they are pure, which means no side effects. they basically run like mathematical equations; single input, single output. they supposedly get around the I/O and UI problem with monads, but not terrifically. they're sort of more algorithmic (or well, functional in a mathematical sense, which is what they are). you'd more write a cryptography system in haskell than a desktop application.


I'm personally not a huge proponent of Haskell, I've only done a few Project Euler problems with it that I can no longer actually comprehend. I'm sure there are people doing useful things with it, but I haven't looked into it in quite a while.

Personally I'm pretty fond of C#, and proficient enough in C/C++. In terms of newer/fancier languages, I've used Rust to build a (to-be-completed) reasonably-sized project, but nothing in a professional setting.

JavaScript, however, is very much not on my list of favorite languages.
---
Internet = Tube0 + Tube1X + Tube2X^2/2! + Tube3X^3/3! + Tube4X^4/4! + ...
... Copied to Clipboard!
Questionmarktarius
09/12/18 10:12:06 AM
#37:


Amuseum posted...
lmao it's the jaded programmers who don't understand what a newbie needs. they don't need to know shit like OOP and encapsulation, that even vets barely touch. they just need to know basic variables and arrays, how to loop, how to make and call functions, how to print out text to the screen.


http://home.cc.gatech.edu/dorn/jeroo

There's also Lego Mindstorms, but it's really damn expensive.
... Copied to Clipboard!
Person106
09/15/18 8:33:53 AM
#38:


... Copied to Clipboard!
kind9
09/15/18 10:43:49 AM
#39:


I recommend Slackware or some variant of it, e.g., Zenwalk or Salix. Learn the CLI, C/C++, and the GNU toolchain. That's a good start.
---
... Copied to Clipboard!
Magus 10
09/16/18 6:30:03 AM
#40:


kind9 posted...
I recommend Slackware or some variant of it, e.g., Zenwalk or Salix. Learn the CLI, C/C++, and the GNU toolchain. That's a good start.


Seems a little overkill to suggest someone jump into learning several new things at once if they're starting with zero programming background, doesn't it?
---
Internet = Tube0 + Tube1X + Tube2X^2/2! + Tube3X^3/3! + Tube4X^4/4! + ...
... Copied to Clipboard!
kind9
09/16/18 6:53:14 AM
#41:


Magus 10 posted...
kind9 posted...
I recommend Slackware or some variant of it, e.g., Zenwalk or Salix. Learn the CLI, C/C++, and the GNU toolchain. That's a good start.


Seems a little overkill to suggest someone jump into learning several new things at once if they're starting with zero programming background, doesn't it?

Maybe it is overkill, but the thing is on Slackware you kind of have no choice but to learn them all together. For the most part everything you install must be built from source, and there is no automatic dependency tracking. You can use "slackbuild" scripts provided by others to automate the build process, but you still have to get used to the CLI and understanding the process of compiling & linking software.

You might think this is all complicated for a newbie, but it really isn't. The Slackware documentation is full of newbie guides and there's even an ebook called slackbook that gives an overview of the system and all the commands you need to know. I could sing Slackware's praises all day but it's not like it's the only option. I highly recommend it though as I consider it the most "purest" distro out there.
---
... Copied to Clipboard!
Topic List
Page List: 1