[ home / board list / faq / random / create / bans / search / manage / irc ] [ ]

/prog/ - Programming

Programming board

Catalog

8chan Bitcoin address: 1NpQaXqmCBji6gfX8UgaQEmEstvVY7U32C
The next generation of Infinity is here (discussion) (contribute)
A message from @CodeMonkeyZ, 2ch lead developer: "How Hiroyuki Nishimura will sell 4chan data"
Name
Email
Subject
Comment *
File
* = required field[▶ Show post options & limits]
Confused? See the FAQ.
Embed
(replaces files and can be used instead)
Options
Password (For file and post deletion.)

Allowed file types:jpg, jpeg, gif, png, webm, mp4, pdf
Max filesize is 8 MB.
Max image dimensions are 10000 x 10000.
You may upload 1 per post.


6525cd No.2167

Hey /prog/, I'm currently learning my first programming language, C++ (inb4 "retard starting with C++)

Anywho, I'm trying to decide on what language I should pair with it, as I'd like to turn it into a job at some point.

I'm thinking Java / C#, but I can't say I know the upside or downsides to either language and would like some opinions from people with more experience.

d2de26 No.2168

1. Do not start with C++

2. Do not start with C++

3. See above

4. Do not use C++

5. As in ever, it's garbage

6. Do not start with C++

7. Do not even say "C++" too often

8. Do not start with C++


90b11f No.2169

just pick any, switching between imperative languages is easy anyway so if you apply for a junior position at a particular job just spend a few weeks learning the syntax for whatever they ask for and you will be fine.

there's nothing wrong with starting with c++, especially if you also learn something else so you can switch to that when c++ frustrates you and after a few weeks/months c++ will seem easy again.

c# is pretty much windows only, if you program on windows you're only punishing yourself, get an OS with proper file system hierarchy and dependency resolution.


6525cd No.2170

>>2169

I haven't done too much, but so far C++ hasn't really frustrated me besides one thing in my book "learning C++ through game programming" where you use iterators that are dereferenced to make a list, and you also have to use an iterator to delete from the list, and add to it. Whatever, I figured it out, and the second book I have infront of me is "The C++ Programming Language" by Bjarne Stroustrup. I have an older edition of C++ primer plus, by Steven Prata, the… 4th edition? early 2000's printing I believe.


5d40ef No.2171

>>2168

So care to tell that why is it so shit and not usable?


d2de26 No.2177

>>2171

No, but you can trust me. I'm an EXPERT PROGRAMMER


a0d97f No.2178

>>2171

It's old and all new OOP languages learned from what was bad about it.

Your first language really isn't going to teach you much besides how to LEARN a language, anyway.

Python or Java is probably a better language to start with because you can do the "cool and interesting" stuff faster, which keeps new people interested more.


25c42e No.2179

>>2178 Nah don't start with Python because you need to be able to understand common language structure and concepts surrounding memory so maybe pick a language in the C syntax family


6525cd No.2181

>>2179

>>2178

Being that I've already knocked one book out on C++, I'm just planning on moving further into it, with C++ Primer Plus, possibly C++ Primer, and The C++ Programming language.

After I feel I'm at a decent point I'll probably move to Java, the thing is, I don't want instant gratification on something like this.

It'll make me less motivated to move onto something harder, because I'll feel like it isn't worth it compared to the first learned language.


eb8329 No.2182

>>2178

Uh, isn't C++11 a big step forward?


9c6fde No.2184

>>2177

( ≖‿≖)

>>2178

>it's old

Age isn't a standalone argument. Why does the age matter? If it was old in the same sense COBOL is - e.g. good luck finding modern tools - you should focus on that.

>>2167

There aren't many languages that make good "pair" languages with C++. Java and C# are for very different domains than C++ is, which may or may not be an advantage depending on what you're interested in.

I'm immensely biased against Java on its merits, but there are some good upsides (particularly the JVM) to it.

What sort of domains are you interested in? If you're interested in "systems" programming (as C++ would imply), Rust is a great option, Go is a reasonable option, Erlang is a great option.

If you're interested in more rapid development (business apps, web, etc.), Java and C# are stronger contenders. Although JS is king on the web. PHP, for all it disgusts me, has significant popularity despite its innumerable failures. That means there are lots of jobs available. Ruby and Python are used frequently in web too.

If you're interested in robotics or other embedded systems, C++ is probably where you want to stay with a possible minor in Java.

Just depends on what you're looking for.


d2de26 No.2185

>>2182

I prefer the term "Great Leap Forward"


9ee45a No.2199

>>2178

I started with C++, but haven't learned Java. Java definitely adheres more to object oriented, but in C++ it's an option. So

>It's old and all new OOP languages learned from what was bad about it.

A bit like comparing apples and oranges.

With Python, I never had to think about managing memory like in C++ because it's automatic, but I think it's an important detail to know when programming.

How it's interpreted would make it easy to get a result out faster though.


6967a2 No.2205

>>2181 A bunch of newer programmers that I'm acquainted with found starting with C++ difficult, so good on you.


6525cd No.2231

So I'm curious if anybody here has read "Programming Principles and Practice using C++" I'm considering picking up the 1st edition book from the local powells (they discounted it heavily because they recently got the 2nd edition) but, I don't know what I'm missing from C++11 and C++14.


3dbff8 No.2326

>>2167

Learn C, C++, Lisp, Perl, Java… you're good to go.

Learning C & C++ goes together. Good code in either language is very different but there's a lot of overlap between them. C will let you do embedded work, C++ gives you some god-tier libraries.

Perl for scripting and complex parsing.

Lisp because by studying it you'll learn a lot about the fundamentals of computer science and you'll grow to be a better programmer overall. A lot of the ideas from lisp carry over to other languages. Some companies will pay big bucks if you can develop in lisp.

Java, as much as I hate it, because it's very similar to C++ in syntax and it'll make it easier to do mobile if you want. Being able to write an app for android can be useful even if you aren't actually trying to market the app (for example, if you want to collect data for some project, mobile might be the most natural way of doing so.)

I say avoid python. It teaches you bad coding habits and it teaches you to be a lazy programmer.

Whatever languages you go with, it's better to find a language you like and become a wizard with it. Don't be a language hopper who knows a little about lots of languages but hasn't mastered any single language. Don't neglect to study important libraries that form the ecosystem of a language. If you know the language and you know the important libraries relevant to a job, you'll have no trouble getting the job.


3dbff8 No.2327

>>2231

I recommend "Accelerated C++" by koenig and moo and "The C Programming Language" by k&r.

Those are the best books available for learning C++ & C respectively. By reading those and doing the exercises you'll learn the fundamentals of the languages. Newer features will come naturally in the course of learning the language.

For anything beyond the fundamentals of a language I recommend learning by experience through projects. Think of a project that interests you and do it. You'll learn a couple new things through the project and then you can move on to a slightly more complicated project.

For some fundamentals of computer science I would recommend MIT Opencourseware and CLR "Introduction to Algorithms"

http://en.wikipedia.org/wiki/Introduction_to_Algorithms


6525cd No.2331

>>2327

is the C programming language still a book worth going over? I ask cause by now thats gotta be… I wanna say 30 years old, but thats without googling it, and would it be something I start or end with? I havent heard much about the book, so I can't say whether or not its newb friendly.


34dd29 No.2332

>>2331

Yes. Look for the newest edition (2nd) which covers ansi C. If you read it and do the exercises you'll learn C. You can find it freely available online if you look for it.

It's as newb friendly as you might expect if you're trying to learn C and you won't learn bad habits that other books might teach.

Also, some of the exercises in those books can be kind of boring. You may find it helpful to have something like an arduino (or better, just the avr chip) to mess around with. The projects you come up with might help to keep you interested.


3f2f48 No.2333

>>2331

K&R assumes programming experience. I'd be tempted to say that a beginner could learn programming with it, but it's not going to be explaining things directly for you.

K&R is for learning C. Not learning how to program.

Not sure why you're so set on starting with something like C, but you probably don't have much choice for books for beginners.


6525cd No.2334

>>2333

I was planning on starting with C++, I mean, I could start with others, but I wouldn't know of any good starter books, I've got my hands on C++ Primer 5th Edition, an older edition of C++ Primer Plus (4th), The C++ Programming Language 4th edition, and a friend of mine has the 2nd edition of K&R if it would really be a good help I could ask to borrow it.


34dd29 No.2335

>>2334

OP I would recommend picking a language and sticking with it. You say you've already started with C++ so you should stick with that for now.

I would agree with this anon >>2333 K&R assumes some programming experience. So does accelerated c++. Those books you have should be sufficient working material for you for now. Having more books doesn't make you a better programmer - programming does. But both those books I mentioned are good books to work from. If you're looking for another book right now then I would recommend Accelerated C++. It takes you from getting started with C++ (assuming programming experience) through basic templates and object oriented programming.

Can you tell us if you have any specific programming interests? (robotics / games / phone apps, etc.)


baeae5 No.2336

>>2326

>I say avoid python. It teaches you bad coding habits and it teaches you to be a lazy programmer.

and Perl doesn't teach it's users about scope or locality, yet you recommended it.

The truth is Perl and Python are fine but only if C,C++, Java or any other strictly typed languages are learned first


3f2f48 No.2337

>>2334

If you insist on starting with either C or C++, go with C++. Even though I prefer C as a language, it's easier to find support online for C++, since it's a fairly popular language.

I still think you should start with something a bit simpler like C#. You COULD start with C++, but C++ has a lot of complexities that you may prefer to leave until later. Things like pointers and memory management are relatively simple on their own, but when first learning to program, it could be a bit overwhelming. Don't learn a dynamic language first.

After you learn 2 or 3 programming languages, it becomes incredibly easy to learn more. So, I would only recommend starting with C++ if you know that's where you want to go, and you have the time, patients, and dedication. Otherwise, you're just taking on more than you need to at once.


6525cd No.2338

>>2335

More than likely the interests I would have would revolve around games. I've read a shorter book on C++ (about 350 pages I believe) called "Learning C++ through game programming" the most recent edition. I've started C++ Primer 5th edition, so far its mostly reviews of what was in the first book, but I'm only on the second chapter because its been kind of hectic at home lately. After that one I was planning on either The C++ Programming language 4th edition or the C++ Primer plus 4th edition I have, unless it would generally be better for me to abandon it for now, and start with an easier one.


34dd29 No.2339

>>2338

Is it C++ Primer by Lippman? If that then stick with it. It's a good book too. That or Accelerated C++.

You need to do the exercises too, don't just read through the books. If you feel comfortable with the language then I would recommend playing with the SFML library or Qt. Qt is great and easy to learn. There's a lot to learn though. SFML is like baby OpenGL. You can make some simple games with it pretty easily.

http://www.sfml-dev.org/

https://www.youtube.com/watch?v=LrEvoKI07Ww

For tutorials on Qt:

https://www.youtube.com/user/VoidRealms/videos


6525cd No.2340

>>2339

Yeah, C++ Primer 5th edition by lippman, lajoie, and moo. I am doing the exercises in the books themselves, since they introduce something, show an example, and ask you to modify it slightly.


34dd29 No.2341

>>2340

That's good anon, you should be set, just keep at it. Do lots of exercises and do projects that interest you, that's the best way to learn.


6525cd No.2342

>>2341

I guess I'll save the links in >>2339 for later viewing.

I can't say that I feel confident enough to make much of a project yet, which is why my future at the moment is just reading through the books.

Any chance you could give me a recommendation of what language to follow up on C++ with? As well as a piece of starting material.

When I'm kind of just letting everything settle for the day I'm mostly looking at what would be good after I'm done with what I've got.

As was stated earlier, Java apparently has a close syntax with C++, so I don't know if I'd wanna go to that one, if it isn't going to teach me much compared to moving to a different language.


34dd29 No.2343

>>2342

You'll do better if you work on projects you like. It gives you a goal to keep you motivated. With SFML for example, try making something like pong or breakout. Classic arcade games. Since you're interested in making games and both of those are pretty straightforward to make.

You should focus on C++ right now since that's what you're interested in. Don't language hop too much. In the course of projects you work on you'll find the need for other languages and pick them up naturally that way.

I've already made recommendations for 5 languages in >>2326. Some anons will inevitably disagree but I think those 5 form a good core language skillset.

If you're looking for a career in programming I would say follow up C++ with Java as a second language. They are both widely used languages, similar syntax, lots of support. There's some overlap in usage, Java tends to get used more in mobile settings or web.

If you want something very different from C++ then I would suggest Lisp (get emacs + slime to program Lisp). Lisp has the added benefit that a lot of early AI research was done in Lisp and it's still used (not exclusively) for that purpose today (you don't need Lisp to do AI. It can be easier to use Lisp for certain AI applications though. You'd need to work with a couple different languages to understand why). So if you learn Lisp it may make it easier if you want a background in AI.




[Return][Go to top][Catalog][Post a Reply]
Delete Post [ ]
[]
[ home / board list / faq / random / create / bans / search / manage / irc ] [ ]