What is the next step for learning programming?

  • Thread starter yungman
  • Start date
  • #1
4,943
110
So far, I almost finish chapter 10 in C++ book by Gaddis, have 3 to 4 more chapters to go. I want to start thinking about what is my next step to learn. Should I learn another language or move onto other parts of programming?

I have been thinking what is my interest, I am not into gaming at all, after thinking about firmware for micro controller, I don't think I want to go there at this moment as I have been designing hardware for those in my career, it's not something that I want to get into anymore. I am interested in cyber security and programs involve Windows. It's interesting watching tv on anti hacking, they even had a show called CSI Cyber a few years back. Like they look at the code and find the virus. Bottom line is I really don't know what I want, definitely not planning to go back to work, just for the fun of it.

Thanks
 

Answers and Replies

  • #4
4,943
110
How about writing apts for windows? What language they use?

I still don't have a clear idea what is the point of having different languages. Is it one is particular good for one purpose? Or it just choice of the programmer that is writing? From the little I read around, seems like all the most popular languages can do windows apts, most can do embedded firmware etc. Sounds more like it's subjective more than whether the language can do the job or not.

Is it like printed circuit board layout software? We have OrCad PCB, Power PCB(PADS), Allegro that are very popular. Of cause each has good points and bad points, but it's pretty much choice of each company what to use. They all can do the job and they all produce pcb at the end. You really can flip a coin and choose one and go with it.

My point is do I need to learn different languages OR get deep into C++ and then move onto more advance stuffs in programming and just use C++ all the way?

I choose C++ because it's the fastest, and also all the companies I worded for use C++ for hardware, firmware. I know if I am still working in my field, C++ is THE language to learn. But how about others like windows apts or cyber security stuffs?

I just read another post here that the OP only knows Python and he is working in a place that he supposed to use a program written in C and he has a hard time with it. I am sure one can write the same program completely in Python, but that's is how life is, those people use C and you can take it or leave it. That's the reason I want to know more about cyber security and windows apt and learn what people most commonly use. It would be a big disadvantage if I run into situation where I don't know the program and that's what most people use.
 
Last edited:
  • #5
34,149
5,764
How about writing apts for windows? What language they use?
That's apps, short for applications. It depends on what kind of app it is: whether it's run in a command prompt window or it's a full-blown windows app, with forms and menus and controls.

If it's just an app that is run in a command prompt, pretty much any language will do. If it's a full-featured Windows program, as described above, there are several choices of languages: Visual Basic, C, C++, Fortran, C#, F#, plus there are software libraries like Eclipse and Net Beans so that you can write the program in Java.
I still don't have a clear idea what is the point of having different languages. Is it one is particular good for one purpose? Or it just choice of the programmer that is writing?
IMO, it's a little of both. Some languages are better suited for some purposes than others. For example, I don't think Fortran is especially well suited to work with data bases, but it is very well suited for heavy duty numeric computations. C and C++ are not well suited for financial work, as their floating point type, float and double, aren't well suited for doing money calculations.

Also, a lot of programmers tend to favor the language they're most familiar with, so unless the application requirements mandate a particular language, they tend to write the code in what they're most comfortable with.
My point is do I need to learn different languages OR get deep into C++ and then move onto more advance stuffs in programming and just use C++ all the way?
My recommendation is to stay with C++. You've just scratched the surface so far, and haven't gotten to classes yet. I think you've been working with C++ for about a month so far, which isn't enough time to really get very far. If you continue your studies with data structures and algorithms, most of the books will be using C++ or maybe C.
 
  • Like
Likes yungman
  • #6
4,943
110
That's apps, short for applications. It depends on what kind of app it is: whether it's run in a command prompt window or it's a full-blown windows app, with forms and menus and controls.

If it's just an app that is run in a command prompt, pretty much any language will do. If it's a full-featured Windows program, as described above, there are several choices of languages: Visual Basic, C, C++, Fortran, C#, F#, plus there are software libraries like Eclipse and Net Beans so that you can write the program in Java.
IMO, it's a little of both. Some languages are better suited for some purposes than others. For example, I don't think Fortran is especially well suited to work with data bases, but it is very well suited for heavy duty numeric computations. C and C++ are not well suited for financial work, as their floating point type, float and double, aren't well suited for doing money calculations.

Also, a lot of programmers tend to favor the language they're most familiar with, so unless the application requirements mandate a particular language, they tend to write the code in what they're most comfortable with.
My recommendation is to stay with C++. You've just scratched the surface so far, and haven't gotten to classes yet. I think you've been working with C++ for about a month so far, which isn't enough time to really get very far. If you continue your studies with data structures and algorithms, most of the books will be using C++ or maybe C.
Thank you sir, this is music to my ears. I have not forgotten your suggestion and I am committed to study through middle of Chapter 14 until reaching overloading. I am more thinking beyond that. I have no intention to quit before that. Hell, that's only 3 1/2 more chapters to go, I went through 10 chapters already, what is 3 1/2 more!!! It'll be done by Thanks Giving or latest Christmas.

I am just thinking whether I should stop after that and study another language. But if most books on data structures and algorithms are based on C++, that is really music to my ears. Sounds like I should go beyond your minimum suggestion.

No, financial is ONE particular part I have NO interest in. Hell, if I were a programmer, I would change career if I have no choice but to work in financial related programming. It cannot be more clearer in my life.

Thanks so much for all your help.
 
  • #7
PeterDonis
Mentor
Insights Author
2019 Award
31,124
10,040
If you continue your studies with data structures and algorithms, most of the books will be using C++ or maybe C.
It's worth noting, in this connection, that most actual code that implements data structures and common algorithms is written in C or C++. A lot of that code lives inside interpreters for higher-level languages, like Python, so it might look like the data structures are higher-level language data structures; but under the hood, the code that is doing the grunt work of actually implementing the data structure and making it perform is C or C++ code. (Two good Python examples are the dict implementation and the implementation of the sort method of the list builtin. Both are heavily optimized C code that does a lot under the hood to make sure those data structures "just work" and give good performance as far as Python programs are concerned.)
 
  • #8
4,943
110
It's worth noting, in this connection, that most actual code that implements data structures and common algorithms is written in C or C++. A lot of that code lives inside interpreters for higher-level languages, like Python, so it might look like the data structures are higher-level language data structures; but under the hood, the code that is doing the grunt work of actually implementing the data structure and making it perform is C or C++ code. (Two good Python examples are the dict implementation and the implementation of the sort method of the list builtin. Both are heavily optimized C code that does a lot under the hood to make sure those data structures "just work" and give good performance as far as Python programs are concerned.)
I just want to make sure when you said "It's worth noting, in this connection", that you are in agreement with Mark44. I don't want to guess anything.

Sounds like I should go deeper into C++ than my original plan of 13 1/2 chapters. Ha ha, I do have 4 books. My first book that I trashed before I move to Gaddis, does NOT look as bad as I learn more and more C++. I actually read the chapter on pointers and it's good.

I also have Beginning C++17 5th edition by Ivor Horton and Peter Van Weert.
https://www.amazon.com/gp/product/1484233654/?tag=pfamazon01-20
Infact, I have two of this book as they lost the first one and sent a second one to me. Then after 2 weeks, the one that was lost arrived. Gaddis is a beginner's book, I bet I need more than Gaddis.

It is music to my ears that it's not necessary to learn another language at this point. I hate names, last thing I want is to learn a new set of names. To me, after the names, programming is very similar give and take, it's the names!! I am just very bad with names. So far, the only chapter that is more difficult is the pointers, other than that, it's very straight forward, just learn the names and syntax.
thanks
 
Last edited:
  • #9
321
178
In an ideal world, one would have a single universal language, that would be efficient and flexible to perform any task. From your posts I feel that you would like to hear from us that C/C++ are such universal languages. But the real world is much more complex and difficult.
For example, you can try to build web applications using C/C++, but I believe you would find it pretty cumbersome, and in the end you would do much better job using more appropriate set of languages. You would even found that some language is more efficient for back-ends, and other one for front-ends.
Good news is that once you master C/C++, it should not be a big issue to learn any high-level language quickly :cool: You just need to know what is your goal, and what kind of applications/programs you want to write..

I hate names, last thing I want is to learn a new set of names. To me, after the names, programming is very similar give and take, it's the names!! I am just very bad with names.
You mean the keywords specific to particular language? It is not that bad, many of the popular languages use similar or same keywords.

How about writing apts for windows? What language they use?
As far as I know, Java and .NET (Visual Basic or C#) are still the most popular choices in this domain.
 
  • Like
Likes jack action and yungman
  • #10
Vanadium 50
Staff Emeritus
Science Advisor
Education Advisor
2019 Award
25,386
8,560
I still don't have a clear idea what is the point of having different languages. Is it one is particular good for one purpose?
This was true 40 years ago too. You could take a list of languages you knew or knew of back in the day, and read their Wikipedia articles. Most explain why they were written. Some for ease of scientific/numerical calculation. Some for business applications like payroll. Some for ease of access to large databases. Some for teaching computer science.

In an ideal world, one would have a single universal language, that would be efficient and flexible to perform any task. From your posts I feel that you would like to hear from us that C/C++ are such universal languages.
I agree with this. But if you went to the hardware store and told them you wanted to buy one single tool that would meet all your needs, they would probably give you a funny look.
 
  • Like
Likes sysprog
  • #11
PeterDonis
Mentor
Insights Author
2019 Award
31,124
10,040
I just want to make sure when you said "It's worth noting, in this connection", that you are in agreement with Mark44.
What I said is consistent with what @Mark44 said.
 
  • Like
Likes yungman
  • #12
108
30
I still don't have a clear idea what is the point of having different languages. Is it one is particular good for one purpose?
I'd say that yes, there good for particular purposes. C/C++ compiles to run fast. A plerhora of APIs exist for almost any task you'd want. Also C/C++ are definitely beter for heavy graphics. OpenGL and DirectX may have Java implementations, but in my experience Java's too slow. Perl, like Python and others works best as the glue between other programs. (again Python isn'the fastest language)...

Korn and BASH acts a little on *NIXes as DOS batch did on Windows although they're not really comparable. On *NIX you feel you actually have power at your fingertips.


Functional languages are a an entirely kettle of fish. :)
 
  • Like
Likes sysprog and yungman
  • #13
jtbell
Mentor
15,631
3,677
A lot of that code lives inside interpreters for higher-level languages, like Python, so it might look like the data structures are higher-level language data structures; but under the hood, the code that is doing the grunt work of actually implementing the data structure and making it perform is C or C++ code.
Note that C++ itself uses some of the standard data structures that are taught in a data-structures course, to implement various "container" classes in the C++ standard library. These are often referred to as the "Standard Template Library" (STL).

For example:
  • std::list is typically implemented internally as a doubly-linked list: a linked list that has both "forward" and "backward" links.
  • std::map is typically implemented internally as a red-black tree, or maybe a binary search tree.
  • std::unordered_map is (I think) typically implemented internally as a hash.
 
  • Like
Likes sysprog and yungman
  • #14
Vanadium 50
Staff Emeritus
Science Advisor
Education Advisor
2019 Award
25,386
8,560
Note that C++ itself uses some of the standard data structures that are taught in a data-structures course, to implement various "container" classes in the C++ standard library. These are often referred to as the "Standard Template Library" (STL)
I agree with this, but I think STL is much more. I think of it as a "library" (not in the .a/.so sense) of common things one might write. You mentioned doubly-linked lists. I might want a singly-linked list instead. That's OK, STL has forward_list. Or I might want to find the first instance of two consecutive elements that match - as an example of something I could easily write, but probably haven't written - STL has adjacent_find.

C/C++ compiles to run fast
While this is often true, C/C++ is not unique in this respect, and speed was not an overriding consideration in either language's purpose. C++ was intended to bring classes to C, as struct was really not powerful enough to do what people wanted to do. C was written to be truly general-purpose, in the sense that there would be little that could not be implemented in the language (painful as it may be). In particular, it was intended to be general-purpose enough that one could use it to write an application, an operating system utility, and the operating system itself. Speed is a concern, of course, but it was not the only concern. It could have been made faster if certain language features were not present.
 
  • Like
Likes sysprog
  • #15
4,943
110
Maybe you need like Hacking for dummies?
I am surprised there are so many books on hacking. I looked into the content of the book you suggested, it doesn't talk much about what language used. Is there any language specifically used? Or it's like IT type that you don't need to know languages, it's just a bunch of suggestions to look out?
 
  • #16
4,943
110
Note that C++ itself uses some of the standard data structures that are taught in a data-structures course, to implement various "container" classes in the C++ standard library. These are often referred to as the "Standard Template Library" (STL).

For example:
  • std::list is typically implemented internally as a doubly-linked list: a linked list that has both "forward" and "backward" links.
  • std::map is typically implemented internally as a red-black tree, or maybe a binary search tree.
  • std::unordered_map is (I think) typically implemented internally as a hash.
So if I study Container Classes and STL, I am knocking on the door of data-structures already? So it's worth my while to study deeper into C++?

You mean other languages don't go this deep?
 
  • #17
jack action
Science Advisor
Insights Author
Gold Member
1,998
2,330
I am surprised there are so many books on hacking. I looked into the content of the book you suggested, it doesn't talk much about what language used. Is there any language specifically used? Or it's like IT type that you don't need to know languages, it's just a bunch of suggestions to look out?
There are no special program languages for hacking. You just need to know the language of the program you want to hack.
 
  • #18
Vanadium 50
Staff Emeritus
Science Advisor
Education Advisor
2019 Award
25,386
8,560
So if I study Container Classes and STL, I am knocking on the door of data-structures already?
More like trying to sneak in by a second-story window.
 
  • Like
Likes sbrothy
  • #19
4,943
110
More like trying to sneak in by a second-story window.
Ha ha, at least I can sneak in!!! Seriously, I want to study data structure, if that helps, I will study that chapter, but if it's more efficient to just go to data structure, then I skip those.
 
  • #20
4,943
110
There are no special program languages for hacking. You just need to know the language of the program you want to hack.
I am not interested in hacking, but I want to learn Cyber security and want to know what languages are necessary. Sounds like they all come in different language, so I have to learn all of them to understand the hack.

One thing I still don't understand. The hack codes are in .exe, it's not exactly a language even if you look at the code. How can people know what to read as it's not going to look like source code that gives you all the variables and names and all?
 
  • #21
34,149
5,764
The hack codes are in .exe, it's not exactly a language even if you look at the code.
The code has been compiled to an exe file -- an executable. That's not a language -- it's just a file format.
 
  • #23
jack action
Science Advisor
Insights Author
Gold Member
1,998
2,330
Hacking can be done in a lot of ways (just think about social hacking where programming is not necessary).

One way is to access the source code of a program. So you could study the source code for PHP (written in C) and try to find a vulnerability in the code. Once you found it, you can exploit it on millions of websites that are build with PHP.

Another way would be to create a program that will do a task impossible for a human, like trying to crack a password by trial and error. In such a case, you can use the program language of your choice to build the program. The .exe file is an executable file for Windows. Once you have created a program, you can create an executable file such that it can run by itself (no need for the basic program of the language to run it). Here's a method to compile such a file for a Python program.
 
  • #25
4,943
110
The code has been compiled to an exe file -- an executable. That's not a language -- it's just a file format.
Exactly, I always question how in the tv shows they can read the code and look at finger prints and all. Is it just in movie and tv, not real live?
 

Related Threads on What is the next step for learning programming?

Replies
16
Views
527
  • Last Post
Replies
1
Views
1K
Replies
5
Views
4K
Replies
17
Views
2K
Replies
13
Views
473
Replies
3
Views
719
Replies
17
Views
3K
Replies
15
Views
3K
Replies
16
Views
935
Replies
11
Views
1K
Top