• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Charles Jarret Grassi

So I've learned C...

19 posts in this topic

I am primarily a C/C++ programmer. However, in April I started a new job as a Java backend server developer. I had never touched Java before I got asked to come in for the interview.

I spent a week using it before my interview, and I passed.

Once you have the programming mindset, and have 'learnt' one language, it's very easy to learn another, it's simply a case of syntax.

I agree with those suggesting learning an API. I think my most valuable skill is my knowledge of OpenGL, having been using it for about 10 years.
1

Share this post


Link to post
Share on other sites
Learning a new language is almost never a bad idea. And I agree that it would not hurt to know an object-oriented language like Java or C#. I agree with Lauris Kaplinski that C++ might be a little bit too familiar so you might learn less from it. However, there are other good and interesting languages out there to learn. I personally think OOP is way, way overrated, and I absolutely hate Java, C++ and C#. Some languages you might want to try: Haskell, Erlang, Lisp (Scheme, Clojure, Common Lisp), Ruby, Python, Go, Prolog. But, you might also want to just stick with C for now, and do a bigger project, like a small game; maybe a simple platformer or some sort of puzzle game.

[quote name='Prefantastic' timestamp='1352105750' post='4997500']
I've heard many stories that Learning C or C++ as your first language is not exactly the best thing to do since the learning curve can be very steep for some, but I've had no qualms with it. Maybe I'm an exception? [b]Or maybe I don't quite understand it as well as I think. [/b]
[/quote]


I think this (the bold part) is the case. Not that you show any particular signs of misunderstanding; you just seem so new to it that I don't think you realize what you don't know. Are you comfortable with pointers, memory management, recursion, data structures, etc?

It also doesn't hurt to learn some computer science theory (which you might wanna do if you want to make super fast game engines). Do you know about hash tables, regular expressions, graph algorithms like breath-first-search, sorting algorithms, dynamic programming, complexity analysis?

I think it might be best to stick with C a little bit longer, so that when you learn new languages later you can appreciate the differences more. And you might want to read up on some theory and such on the side, if you are interested.

Lastly, and I almost didn't write this because it seems so obvious now (I started 8 years ago): Programming is so much more than knowing languages. Besides the things I've mentioned, there is also the skill of good program/code design. I mean writing well-structured, maintainable, reusable, flexible, short, simple, correct and safe code. If you always think hard about the code you are writing, like "Could this be done better?", "Are there problems that might arise later with this?", etc. you will speed up your learning process. Reading books, blogs, and watching presentations can also help a lot. Edited by tufflax
2

Share this post


Link to post
Share on other sites
[quote name='Lauris Kaplinski' timestamp='1352120502' post='4997553']
Personally I suggest learning Java. C++ is a bit too similar to C and thus you will end up doing many things "the C way", instead of "C++ way". Once you have learnt OO with separate language you can better understand the nuances of C++.
[/quote]

This is a great suggestion (C# would be equally good for the same reason) - pick an OO language that you just cannot write C-style code in and you neatly avoid the trap of just falling back on C concepts and constructs as an easy way out.

Definitely seconded and +1 for that.
0

Share this post


Link to post
Share on other sites
Man. I love you guys so much. No matter what questions I throw out there, I always get a mass of intelligent people such as yourselves giving me your two-cents and leading me on to be a better programmer. I can't thank you guys enough for all of the patient guidance you guys have provided me within the last month-or-less of me being a member on this forum. I really hope that I can pay you guys back some how, be it some free-lance programming or even some sensual serenading (I was a music major before i switched to computers ;D).

As it stands now, I do believe I'll pick up Java as I'm learning more of c. I'm gonna continue to study C and maybe mess around and develop a bit of a Interactive Fiction style program game that's easy to go through and run but has some complexities that make the program more efficent.

But a curious question that has been bugging me for the last few months is this;

Is there a way to blend languages together? I had a recent conversation with a new found friend of mine, not a half hour ago (Mind you, I'm sitting in the student center at my local community college enjoying a nice, tachicardia-enducing energy drink) who spoke of ASP.net . He said that in the language they use a lot of C#. I responded "Do I need to learn C# to learn asp?" and he said firmly, "ASP is a language on it's own... It's very hard to explain."

So... yeah. I'm a bit confused as to his response, so I shall ask you, my fellow quick-witted, ingenious, and handsome bretheren...

Is there a way to use one programming language in another programming language? Such as being able to write C in Java... etc. etc.

And please do explain more about what he meant with ASP.
1

Share this post


Link to post
Share on other sites
[quote name='Lauris Kaplinski' timestamp='1352120502' post='4997553']
[quote name='Anri' timestamp='1352118243' post='4997542']
I would agree with mhagain about stepping up to OOP. Java or C++ are good choices, although if you are comfortable with C then maybe C++ might be a better choice - but either either way you cannot go wrong.
[/quote]

Personally I suggest learning Java. C++ is a bit too similar to C and thus you will end up doing many things "the C way", instead of "C++ way". Once you have learnt OO with separate language you can better understand the nuances of C++.

[/quote]

I have to admit, Java is great for learning OOP - mainly because one uses it from the get-go, whereas C++ its an option. And I can agree that its a mistake to believe that C++ is merely C with OOP tacked on. If some one asked advice for moving from C to C++ then I would recommend Herbert Schildt's Complete C++ Reference, as it points out how the two are similar but also different.
0

Share this post


Link to post
Share on other sites
I am exactly in the same (or at least a similar) boat as you. I have learned C as well, and some C++ to go with it. I am not quite the "master of the keyboard" as you put it, and only a few people are truly near being what you may consider a "master" on these forums, and I think those would be the members (that I have heard from) like ApochPiQ, Hodgman, jbadams, phantom, hplus0603, Servant of the Lord, etc. Of the ones I have heard from, ApochPiQ worked on GW2 and the user phantom made a realtime raytracer application that looks awesome. It is called Brigade if I am no mistaken. There are others, but those are the ones I hear from the most.
But, back to the topic. What I am doing is learning OpenGL, but there are so many other API's that people don't really focus on, such as a sound API, networking, I/O, etc. I started everything around this time last year (fully started in December of last year), and I always set the bar too high for myself. I wasn't naive enough to have ambitions to make something like Unreal, or Source, but even my early ideas were too much. I originally wanted to (more than a year ago) make a top-down-scrolling Doodle Jump-esque game that involved elevators for iOS only, but as my knowledge grew, so did my ambition, without ever completing (or even starting) my projects. I am now fully (if not way more than) capable of making that elevator game, but my goal is now to make a 3D RPG game (albeit a relatively simple one) for the Ouya console and probably PC and Mac with both online and single player play. Yes, I get very much ahead of myself. I am hoping I can at least amass enough knowledge to start by March. That will have been almost two years of learning. I initially (and foolishly) hated it when people said it took a long time to learn this stuff, and I wanted to make stuff NOW, but I have really wasted this time chasing after games I can never make. I hope I can make this one, however, as it is a very good idea. That final sentence was very cliche.
I hope you finish something and become more productive than my sorry lazy ass, as laziness and/or idleness will NOT get you anywhere and waste ALL of your time.
2

Share this post


Link to post
Share on other sites
Learn c++ and QT. Then you can do almost anything cross platform too. Edited by EddieV223
-1

Share this post


Link to post
Share on other sites
[quote name='Prefantastic' timestamp='1352105750' post='4997500']
After learning the basics of the C Language, I don't quite know what to do with myself. I mean, I've been craving to start SOMETHING and I've already made myself a basic stat roller for Dungeons and Dragons and the basic programs assigned to me by my professor. But I don't know where to go from here. I've heard many stories that Learning C or C++ as your first language is not exactly the best thing to do since the learning curve can be very steep for some, but I've had no qualms with it. Maybe I'm an exception? Or maybe I don't quite understand it as well as I think. I'm not sure, but I've come to gamedev to ask you masters of the keyboard to guide me in the right direction.

I've been wanting to get into learning Java, I'm going to try and take a class for it next quarter (if I pass this quarter's intro to C [Damn my laziness]) and I'm not sure if that's where I want to go. I would love to take up programming professionally, I just am not sure what exacty I want to do with the knowledge I'm collecting. I know that C, so far, is very memory based and seemingly more intricate than the programming I had invisioned, but I find it extremely fun.

I would like to be able to use C and C++ in some way, shape, or form. I kind of invision myself to be one of those guys that makes game engines like the unreal engine or something. I always thought it would be cool to be the un-sung heroes of the gaming world, making some of the fastest, most powerful gaming tools on the market. But then again, I also want to be a rock star... so you can see my indecisiveness.

Anyway, i'm merely rambling as I always do.

My point is... Where do you guys think I should go next? Do you think that I could take another class of c and c++ and be able to find a programming job this way? Or do I need to learn a lot more languages before I can even consider turning in an application for even the lowest levels of the programming profession.
[/quote]

Some of the smartest programmers that I ever knew professionally were college or even highschool dropouts. Its possible to get into the industry without taking any classes at all, however, it is not easy to do.
I guarentee that learning C first is not at all a mistake, its easier to learn other languages, however, learning C will help you understand what you are actually doing, whereas many Java and C# programmers have no clue at all what they are doing, they are just typing magic words. Using C will help you understand what is happening internally in your computer, and as a result, you may have more trouble learning, but in the end, you will probably end up being producing better quality code when you are finished learning, so I highly recommend continuing to learn C and avoid Java and C# at all costs. Especially if you are interested in game programming.
However, you should know that now, Android programming is pretty hot, so if you want to develop Android applications, you should know at least some Java, you can do C programming on Android, but officially applications on Android should be written in Java (I personally don't care and write mine in C, but its fine for me because I don't plan to release my software as Android software).
If you are willing to try to write hardware drivers, then C is the best language to know.
For speed, efficiency, and resource conservation, you can't do much better than C. Some languages can about match C such as pascal, but C is more powerful because of the amount of libraries written in C, you can't expect everything to have a pascal binding for you. The only language that is actually faster than C is assembly, and most people find that to just be infeasible on modern computers, especially if you want any portability at all.
So basically, figure out what your goal is and work toward that. However, my recommendation is to stick with C.
0

Share this post


Link to post
Share on other sites
[quote name='prushik' timestamp='1352199471' post='4997971']
Some of the smartest programmers that I ever knew professionally were college or even highschool dropouts. Its possible to get into the industry without taking any classes at all, however, it is not easy to do.
I guarentee that learning C first is not at all a mistake, its easier to learn other languages, however, learning C will help you understand what you are actually doing, whereas many Java and C# programmers have no clue at all what they are doing, they are just typing magic words. Using C will help you understand what is happening internally in your computer, and as a result, you may have more trouble learning, but in the end, you will probably end up being producing better quality code when you are finished learning, so I highly recommend continuing to learn C and avoid Java and C# at all costs. Especially if you are interested in game programming.
However, you should know that now, Android programming is pretty hot, so if you want to develop Android applications, you should know at least some Java, you can do C programming on Android, but officially applications on Android should be written in Java (I personally don't care and write mine in C, but its fine for me because I don't plan to release my software as Android software).
If you are willing to try to write hardware drivers, then C is the best language to know.
For speed, efficiency, and resource conservation, you can't do much better than C. Some languages can about match C such as pascal, but C is more powerful because of the amount of libraries written in C, you can't expect everything to have a pascal binding for you. The only language that is actually faster than C is assembly, and most people find that to just be infeasible on modern computers, especially if you want any portability at all.
So basically, figure out what your goal is and work toward that. However, my recommendation is to stick with C.
[/quote]
I won't start an argument here, since that'd probably turn into the usual my-language-is-better-than-yours, but I just want people to know there are some things in this text that is quite arguable... [size=2](however, I'm not saying C is a bad language)[/size]

As for the OP: I agree with those that suggest you learn an OO language, like java or C# as those languages are kinda the 'opposite end' of C. Knowing OO is a good skill to have as a programmer in general, and it might prove interesting for someone who has programmed in a language were you have full control of everything, to try a language were you have very little control.
0

Share this post


Link to post
Share on other sites
I would like to point out to the OP that the path to mastering a programming language (or a paradigm) is steep. Ask yourself: which concepts don't I understand completely? The memory management? Casting? The preprocessor? Bit shifts? Floating point numbers? String management? The standard library? Think about those. Don't assume that you know the whole foundation of C. Read about those concepts that you don't understand perfectly and experiment. Understand that learning language and mastering it to use it effectively are two entirely different things.

About C++ and Java – I personally think that it is easier to switch from a low-level language to a high-level one. It's like "hey, great libraries, rapid and easier coding, hooray!" as opposed to "man, there is no garbage collector, screw the memory management". But it is your call.
1

Share this post


Link to post
Share on other sites
Hi, fellow dreamer! [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img]

[quote name='Prefantastic' timestamp='1352105750' post='4997500']
I would like to be able to use C and C++ in some way, shape, or form. I kind of invision myself to be one of those guys that makes game engines like the unreal engine or something. I always thought it would be cool to be the un-sung heroes of the gaming world, making some of the fastest, most powerful gaming tools on the market. But then again, I also want to be a rock star... so you can see my indecisiveness.

Anyway, i'm merely rambling as I always do.

My point is... Where do you guys think I should go next? Do you think that I could take another class of c and c++ and be able to find a programming job this way? Or do I need to learn a lot more languages before I can even consider turning in an application for even the lowest levels of the programming profession.
[/quote]

Where should you go next? Are you kidding or something? Don't you see the opportunity before your eyes? Just in case you don't, I will explain...

It is good that you came here for advice, so you can find a path, plan, course, and career direction. There is nothing wrong with indecisiveness at this point in your school course as long as it is short, but I will help you decide. It is normal to hesitate at a crossroad, but I am glad that you are concerned about it. Looking at your map, are you? Great! Asking for directions? Wonderful!

Completing education is important for your reputation and knowledge. Hopping, cancelling, and restarting things is inefficient. You need to choose a course and see it to the end or some big opportunity is presented. Learn each language well! Better to master a couple languages than be mediocre and ineffective at several more.


Please, please, please, take the following as [u]constructive criticism[/u]:

First thing that you need to do is decide what you want for a career and be fully committed to it, as you revealed earlier.
Second is to look at your options, but you need to ask for more advice in the near future other than this thread - use several sources.
Third is to begin to [i]research[/i] your options in more depth than this thread can provide.

By the time you finish school, I am sure, you will have understood the above three. There is no hurry on a career choice because you are in school to bring structure to your indecisive self - actually a good [i]decision[/i] on your part - going to school being an action decision.

You say that you learned C, but where are your real world projects that you created in C? Other than school, what have you accomplished in C? Do you realize that this practical applying of C which I mention here may actually take years to achieve? I recommend that you continue learning C in future classes and slowly add other languages which match your [u]career goals[/u].

Learn one or two languages at this stage and keep working with them long term. You really need a core language around which you learn other things, including other languages. Why don't you ask a professor? They are supposed to have good information about career choices with programming.

As for game development, any of the languages which you mentioned and many more would be powerful and effective for a skilled programmer.


Please don't choose a career path based on seeking glory alone! Having been a semi-professional musician and recently semi-pro in game assets, I feel obligated to let you know that you need a burning desire that people enjoy your art, but not necessarily for glory's sake. You must enjoy the journey as well as the end results.

Big dreamers like you and me need to cultivate our good habits so we can get past the fantasy and take action! [img]http://public.gamedev.net//public/style_emoticons/default/dry.png[/img] A fix for you is to study the lives of highly successful and decisive people, for example as revealed by the master of success - Napolean Hill. Find inspiration which is deep inside you. [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img]

Know your condition inside and you will be able to decide what you want to do. When all else fails, plan by what you [i]want[/i] and take action! The progress made by your desires is most important! No desire? Don't know what you want? Well... flip a coin between wanting to be a rock star or a gaming star, then put your whole heart and energy into it! ... you dreamer, you! [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img]



Clinton
0

Share this post


Link to post
Share on other sites
I mostly agree with tufflax and BeerNutts. Whether you are learning new languages or not, try to get actually good at one and do larger projects with it. Only when you are good enough with your tools that you don't have to pay a lot of attention to them, you start developing the big-picture skills that make a good programmer. Just superficially learning a bunch of languages one after another takes you nowhere.

I'm a teaching assistant at a university level C course. We do not teach programming - we teach the C99 language. (The course assumes previous programming skill in some other language.) It is a semester long, and I think it is supposed to take the average student about 160 hours of work to complete, most of that being exercise / coding time. In that time we can barely cover all the fundamental building blocks you use to do stuff in C. Topics include maybe 1/3 of the standard library, bit manipulation, memory management, macros, generic programming, modular/object oriented programming. Any memory leaks or illegal reads/writes will kill your exercise scores so you better learn to use a memory analyzer. Plenty of things like build control, debuggers or static analyzers which are critical for professional C development are not covered. [i]Completing the course with the highest grade means the student "kind-of knows C" and has a good basis for learning further. It doesn't indicate in the slightest that the student is a decent C programmer, much less a good one.[/i] If you write a semi-serious game or other app in C - let's say couple thousand lines of code from scratch - and it works and isn't a horrible pile of bugs, then you are a decent C programmer.
0

Share this post


Link to post
Share on other sites
[quote name='prushik' timestamp='1352199471' post='4997971']
[quote name='Prefantastic' timestamp='1352105750' post='4997500']
After learning the basics of the C Language, I don't quite know what to do with myself. I mean, I've been craving to start SOMETHING and I've already made myself a basic stat roller for Dungeons and Dragons and the basic programs assigned to me by my professor. But I don't know where to go from here. I've heard many stories that Learning C or C++ as your first language is not exactly the best thing to do since the learning curve can be very steep for some, but I've had no qualms with it. Maybe I'm an exception? Or maybe I don't quite understand it as well as I think. I'm not sure, but I've come to gamedev to ask you masters of the keyboard to guide me in the right direction.

I've been wanting to get into learning Java, I'm going to try and take a class for it next quarter (if I pass this quarter's intro to C [Damn my laziness]) and I'm not sure if that's where I want to go. I would love to take up programming professionally, I just am not sure what exacty I want to do with the knowledge I'm collecting. I know that C, so far, is very memory based and seemingly more intricate than the programming I had invisioned, but I find it extremely fun.

I would like to be able to use C and C++ in some way, shape, or form. I kind of invision myself to be one of those guys that makes game engines like the unreal engine or something. I always thought it would be cool to be the un-sung heroes of the gaming world, making some of the fastest, most powerful gaming tools on the market. But then again, I also want to be a rock star... so you can see my indecisiveness.

Anyway, i'm merely rambling as I always do.

My point is... Where do you guys think I should go next? Do you think that I could take another class of c and c++ and be able to find a programming job this way? Or do I need to learn a lot more languages before I can even consider turning in an application for even the lowest levels of the programming profession.
[/quote]

Some of the smartest programmers that I ever knew professionally were college or even highschool dropouts. Its possible to get into the industry without taking any classes at all, however, it is not easy to do.
[/quote]
That type of people tend to stand out and get hired or start their own business before they graduate. I'd strongly recommend staying in school until you either get a degree or a job (If the job offer comes before the degree you probably want to make sure that you can go back and finish the degree later if things don't work out in the long run)
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0