Overlord Drakow
Banned
- 3,655
- Posts
- 17
- Years
- Down Under
- Seen Nov 6, 2019
For someone who has no programming experience, what would be an easy language to pick up?
I guess any programming language would be easy to learn, because it is 60% brain work and 40% code work.
So starting with something with lesser codes would be a good idea.
I would suggest Visual Basic?
C is pretty easy to learn, as others have suggested, but it's fairly hard to master. However, it is also a building block for its supersets (like C++ and Java), and really makes learning them much easier. Any difficulty, I think, that you encounter learning C will just make learning objective languages and C supersets all that much easier in the long run.
C++ is like C but awful.C++ - C++ is C with classes, so a more object oriented version of C with some other differences. So the same thing that I said about Java applies to C++. But C++ doesn't handle everything like Java does, so this would be like braindeath2.
Pygame is also a very good library for it. And the bindings for common libraries like Webkit are nothing short of awesome.Seriously, Python is EXTREMELY easy to pick up and VERY powerful. There are some absolutely wonderful libraries available for it as well, like PySide (Qt bindings for Python), making it my language of choice for any large-scale development (C takes the cake for developing efficient code, though).
C++ is like C but awful.
I think it teaches a lot of good practices. The "one Python way" tends to be the right way most of the time. The documentation is also very, very good (and you can use the same engine to make your own documentation for the code you write, which is really cool). Also, Python 3 is pretty awesome; no more vague division, now there's / for real division and // for integer division. Cool stuff.Pygame is also a very good library for it. And the bindings for common libraries like Webkit are nothing short of awesome.
Python is indeed powerful, but it also is harder than you describe. It may handle more, but it also has more rules, many which don't exist in other languages. It also teaches bad practices with variable conventions.
Python was made so that there was only one way to do things, which is nice I guess, but if you are new and don't know the API fully, you are going to have a hard time finding out what that "one way" is supposed to be.
Also, Python has gone down a lot recently...
The error-handling in C++ is beyond a cruel joke; it's just downright awful. Nobody even uses try/catch in C++ because it's so horrible. The OO can be nice in some situations, but other languages do it better. C++ code is also a PITA to maintain.Say what you will, but the error handling, and the object oriented development style is a godsend. It is also almost as fast as C.
I would recommend "C", personally... It may look intimidating, there there is literally only 32 keywords in the entire language. Everything else is structure, flow, and external APIs (Which is where you get most of your functions from, but don't worry! They are well documented.) It's dead simple for a programming language, and it's freaking powerful!
As weird as it may sound, I recommend learning in a virtual machine... A Linux virtual machine... Why? Because the documentation for C is built right into it! Mostly, they also happen to conveniently come with a compiler (gcc) so you don't really need to set anything up... That's a big step ahead..!
First try to learn how the language is structured, and after you get the hang of that, just dive in to the standard libraries. (Libraries are things that give you commands to use, and you access them by with an "#include" directive.)
When you get a grasp of the standard libraries, feel free to check out any API you want..! (I recommend SDL, since it is well documented, and happens to be cross-platform)
I haven't used it, but I hear that this is a good tutorial for the language..!
Also, it is dead simple to learn C++ after you have a grasp on C... And most major software is written in C or C++. So it would be very useful to learn.
But he's not, at least not 100%.Alas i can't add anything to that, all i can do is echo the aforementioned points and state 'He correct dawg' in a somewhat ghetto accent
Malloc and pointers... Those are indeed the two most difficult things about C... Most of it is actually quite easy though. As for strings, character arrays are sometimes easier to work with as opposed to arbitrary classes since they can be called as a primitive data type and give some insight how other language strings actually work, but generally, they are cumbersome. So yes, you are correct in this, these things are not as easy in C as they are in other languages.But he's not, at least not 100%.
C is an all right first language to learn, it's well-documented and makes sense for the most part. However, strings are horrible and are done better in almost any other language, and trying to teach a new programmer what a "pointer" is or how to use "malloc" is an exercise in futility.
I beg to differ, depending on the type of programming you get into, you can do whatever you want to a virtual machine without any fear of screwing anything up, plus it is less work to work in a Virtual machine since it comes fully configured to begin with as opposed to setting up a Cygwin environment with a much more limited toolset as well as none of the advantages that the isolation of a virtual machine gives you. Plus Cygwin is nothing I would recommend using for compilation since it requires it's DLL to be included with anything you make if you use it's compiler.... If you use any gcc on Windows, I would recommend MingW over Cygwin any day.Learning in a virtual machine is silly; all of the manpages are available online and it takes 5 minutes to set up a decent cygwin environment to have a roughly equivalent programming environment. I hate cygwin in general, but for learning, there's really no reason not to use it.
As far as paradigms go, Object oriented is not that hard, but it is by no means easy for a beginner... It is an intermediate concept, it is much more futile than learning the concept of pointers in C for a newbie. Another reason I suggested C was because it's paradigm (procedural) works as a very nice interlude into Object Oriented eventually... Plus it is much easier to learn. Object oriented is great, but it is killer if you are just beginning to learn the concepts of programming.Also, he recommends against learning an OO language first. OO is an easy and useful paradigm to learn, there's no reason not to learn it immediately, so long as the student realizes it's not the only way things are done and shown how other paradigms might do things.
Python is taking over in places..? I was unaware of this... This is interesting if this is true. And yes, bstrings is a way to get over one of C's weaknesses... I just wouldn't rely on it too much since that API isn't available everywhere.For the longest time, Java was the standard first language in US schools. Now, Python is taking its place in some places, and I think that's fine. C is also an option, at least if taught well; that includes teaching what pointers are and how they work early on. Maybe integrate bstrings into the education; learning how to dynamically link external libraries in that you can just drop in to any project is a useful skill and bstrings remedy probably the worst part of C.
Procedural programming is a good way to eventually learn Object Oriented... And it is far easier in my experience than jumping right into it. Also Python's typing system frankly, leaves much to be desired. The top down small chunk programming style of C also makes it easy to visualize how to create programs in small easy to digest pieces as opposed to the often lengthy pieces that Python generally has.I just think Python teaches better conventions than C. There are more things you lack knowledge of learning C as a first language than learning Python as a first language (namely, any understanding of the OO model and how to use it).