What is the next step for learning programming?

In summary, the author is undecided about whether to learn another language or move onto more advanced programming topics. They are interested in cyber security and want to learn more about apts and windows apps. They are unsure of what their next step should be and want advice on whether to learn more languages or focus on C++.
  • #36
harborsparrow said:
C++ is IMO much the more difficult language, for one reason because it allows things like multiple inheritance, but also because it is C language and thus dependent on the machine's hardware architecture and does not so easily port between machines or OS versions. C# is more elegant, fully standardized, the the VM it runs on is highly optimized for performance. The tools are free. It's more like Java--memory is managed for you, although you still might need to know exactly what is happening in memory when objects are created and destroyed.
I was a hardware designer before, memory allocation, file storing means something to me. Even in C++ I am learning now, I particularly like pointers, dynamic memory allocation, file manipulations and the others that are more hardware related. I think it's very important for people that program hardware as well as people that design hardware to understand across the field to have full appreciation of each other. I never experience issue interfacing with software group in decades of my career. I think it's because I did get into programming long time ago, that make me appreciate what programmers are doing and try to make life as easy as possible for them. I think it works the other way around also.

Not all programming are on PC or bigger computers. There is a big field in embedded controllers that need software(firmware). You don't have infinite amount of RAMs and flash memory. You BETTER know where and how you use memory. You don't pull in a bunch of wasted code in just to be "elegant". You better be prepare to get you hands dirty when speed, timing and size are the bottle neck.
 
  • Like
Likes harborsparrow
Technology news on Phys.org
  • #37
yungman said:
I was a hardware designer before, memory allocation, file storing means something to me. Even in C++ I am learning now, I particularly like pointers, dynamic memory allocation, file manipulations and the others that are more hardware related. I think it's very important for people that program hardware as well as people that design hardware to understand across the field to have full appreciation of each other. I never experience issue interfacing with software group in decades of my career. I think it's because I did get into programming long time ago, that make me appreciate what programmers are doing and try to make life as easy as possible for them. I think it works the other way around also.

Not all programming are on PC or bigger computers. There is a big field in embedded controllers that need software(firmware). You don't have infinite amount of RAMs and flash memory. You BETTER know where and how you use memory. You don't pull in a bunch of wasted code in just to be "elegant". You better be prepare to get you hands dirty when speed, timing and size are the bottle neck.

I appreciate where you're coming from (and going to). I have experience with embedded C. I've written code for handheld barcode scanners and various types of hospital equipment (Wow! A "BiosBeep()" command! :) )

If you stick with ANSI C, don't litter your code with "asm" blocks and stay away from graphics (ncurses might be OK. I've been out of the loop for some time.) you should be fairly sure the code will port OK though.
 
  • #38
harborsparrow said:
Since sbrothy mentions the Design Patterns book, which is truly iconic, I'll point off to an article which will give someone an overview of that book. This was the article that I originally wrote about it in Wikipedia, but after being crowd-sourced in WP For lo many years (translation: chewed on by dogs), it's usefulness was diluted in WP. Of course, WP does do a good job of documenting each individual design pattern (which I never got to). Anyway, this Citizendium article is an overview of the important first section of the book, which gives guidance on how to use (and not use) the many features of a fully object-oriented language such as Java or C#. It might be worth a look:
https://en.citizendium.org/wiki/Design_Patterns

Sorry to revive an old thread. Regarding the article at Citizendium I'm not sure calling it "dense" is really fair but then again I learned English mostly from reading manuals and technical litterature (it probably shows. Be grateful you don't have to talk to me. :). )

In the Wiki article they bring up some points under the "Criticism" header which may well be justified. I learned a lot from the book but that was also at the beginning of my programming learning curve. An important issue, or pitfall if you like, is that you can overdesign things. Something that was sadly encouraged at the SUN Java Programmer licensing exam. Not that that license is something to brag about. It was just mandatory in the corporate environment I was in at the time. It was also the first step of three if memory serves me. The next being "architect" or some such.
 
  • #39
BTW, is Assembly language programming still around? I cannot imagine that can go away unless processor chips don't use assemble language now a days. My programming days were assemble languages. Computers were Z80, you only have 64K memory TOTAL...EPROM, RAM, IO Ports, Timing chip...All in that 64K. Only language for development is assembly.

Even now a days, most micro controllers have internal memories, most of the time, that's all you get. Not like you have 100G RAM to play with. Adding external memories is a big deal and we did our best NOT to in the design for both space and $$$.
 
  • #40
I spend quite some time learning Turbo Assembler before realizing that the world would ice over again if I didn't switch to a higher level language like for instance C. Most C/C++ compilers will output an intermediate assembler file if told to.

Learning assembler is like holding a cat by the tail. It may not be very productive in the short run but you learn something you can't learn any other way. :)
 
  • #41
sbrothy said:
I spend quite some time learning Turbo Assembler before realizing that the world would ice over again if I didn't switch to a higher level language like for instance C. Most C/C++ compilers will output an intermediate assembler file if told to.

Learning assembler is like holding a cat by the tail. It may not be very productive in the short run but you learn something you can't learn any other way. :)
I am more thinking about using in critical timing and limited memory situation encountered in micro controllers. can't beat the speed of assembly language and timing is very predictable.

Oh yeh, you have to know the inside of the processor to write assembly. You literally writing to a physical part of the processor.

Doesn't somebody has to write the low level interface before the higher level language can call those function? those should be best be done with assembly. But what do I know.
 
  • Like
Likes sbrothy
  • #42
yungman said:
I am more thinking about using in critical timing and limited memory situation encountered in micro controllers. can't beat the speed of assembly language and timing is very predictable.

Oh yeh, you have to know the inside of the processor to write assembly. You literally writing to a physical part of the processor.

Doesn't somebody has to write the low level interface before the higher level language can call those function? those should be best be done with assembly. But what do I know.

Yes, you're right. Someone has to write the compilers and translate the (eg) C language to assembler. This is where portability fails. Chipset commands differ - although in our day and age they're probably more or less alike. Intel inside?

Writing (or at least understanding) assembler forces one to grasp concepts like stacks, registers etc. Just writing a function definition in C translates to a lot of assembler code. Loosing the big picture is easy when you have to pay attention to that level of detail. I've noticed also that "programmers" from intermediate educations (read: non-college where they're not forced into thinking about writing operating systems or compilers from scratch) lack a basic understanding higher education (or experience and selfstudy) provides. Of course you might say. I've seen newly graduated students turn blank if I mention Claude Shannon. It's almost like physics graduates not knowing the names Maxwell or Einstein. Unfair to be sure. Knowing how the devices we use everyday now require a degree of specialization not necessary for using them or writing "apps". Also to be fair, how many know, or think about, the intricacies of cumbustion engines when driving our cars around?
 
Last edited:
  • Like
Likes yungman
  • #43
But yes, if you find yourself having to utilize the chipset to the max you're probably forced into assembler. But then again we're almost into embedded programming. Your code is tied to the hardware and it isn't going to port without serious work.
 
  • #44
sbrothy said:
Yes, you're right. Someone has to write the compilers and translate the (eg) C language to assembler. This is where portability fails. Chipset commands differ - although in our day and age they're probably more or less alike. Intel inside?

Writing (or at least understanding) assembler forces one to grasp concepts like stacks, registers etc. Just writing a function definition in C translates to a lot of assembler code. Loosing the big picture is easy when you have to pay attention to that level of detail. I've noticed also that "programmers" from intermediate educations (read: non-college where they're not forced into thinking about writing operating systems or compilers from scratch) lack a basic understanding higher education (or experience and selfstudy) provides. Of course you might say. I've seen newly graduated students turn blank if I mention Claude Shannon. It's almost like physics graduates not knowing the names Maxwell or Einstein. Unfair to be sure. Knowing how the devices we use everyday now require a degree of specialization not necessary for using them or writing "apps". Also to be fair, how many know, or think about, the intricacies of cumbustion engines when driving our cars around?
The reason I kept talking about Assembly is not just in the programmer's point of view, actually it's my point of view as USER.

I know I mentioned here a few times already. the newer the stuffs are, the SLOWER they are, the more trouble to use it in the name of USER FRIENDLY and nobody left behind, even an idiot can monkey around and get to know how to work it...eventually. Processor is at least 1000 times faster today than from the 70s. I know program are much more sophisticated, but how can the old TRS-80(Radio Shack) running old programs is SO SO SO much faster than even the stupiest new programs on the latest computers? I think I know the answer...Calling all the junk codes in, going through fancy steps...slow down the processor to the point that it's irritating. Then programmer want to make it fancy, too fancy even for consumers. Case in point, the new cars today all have mouse stick thumbing through the layers of menus. Don't they ever think of how danger for a driver to go through layers of menu to find what they want...while driving on the road? Both Motor Trend and Car And Drivers complain about the infotainment system of all the trouble. So it got to be NOT the wish of the marketing, must be programmers want to be fancy. AND they are SLOW, UNRELIABLE. I have two cars of the same brand, one is 2014, one is 2018. The 2014 one has more traditional control with keypad buttons for radio etc. Been 6 years old and never been to the shop( of cause maintenance). The 2018 one spent 5 weeks min the first 8 months in the dealer because of computer problems. Mouse pad all around and do strange things if your sleeve accidentally touch it. When you want to make a 3 point U turn, it will take 2 to 3 seconds precious time to switch from D to R or R to D. When turn on the car, it will take up to 15 sec to have everything comes on! Then those stupid printers We went through 5 or 6 Canon all-in-one in the last 3 years. They are getting slower and slower. It's a struggle to print a page and very inconsistent. Every time there's an automatic software update, that always spells trouble. The printer works a little different after the update...never better though.....then my new 82" "Smart" tv. It is so much worst than the same brand 65" I bought only 2 years ago. Thumbing through layers of menus just to adjust picture size, color and all. Who dream up with all these stupid stuffs? Don't those people that wrote the programs ever stop and use them first to see how bad they are?

Even the Visual Studio that I am using for C++, it's a daily thing to have to close it and open again when it start doing funny things. It is NOT the fastest program by a long shot. How many times I have to actually restart the computer as VS behave funky. All of a sudden it cannot create new project, half way and error show up, then I have to go in and delete the partial folder it failed and redo again. There are times it will keep failing...until I change the name!
 
Last edited:
  • Like
Likes sbrothy
  • #45
Wow. You seem a little p*ssed off. :)

I think I can sort of relate though. Writing an app for Android means downloading their IDE and using the Java API provided (there may be a C hook but people don't use that unless they need specific performance from the hardware).

The end result is, as you subtly point out, that the end user has to live with sub-par performance. With the hardware performance today I'm not really sure it's a problem though. I mean what do people do with their apps? Facebook? Wordfeud? It doesn't really scream mission criticality..

EDIT: But yes, people also demand strange, and sometimes unrelated and impossible things from the software they download ed virtually for free.

EDIT2: And yes, life and death systems like GPS (maybe not so much for cars) have better work. On the other hand the users who fail aren't really around to complain. :)
 
Last edited:
  • #46
sbrothy said:
Wow. You seem a little p*ssed off. :)

I think I can sort of relate though. Writing an app for Android means downloading their IDE and using the Java API provided (there may be a C hook but people don't use that unless they need specific performance from the hardware).

The end result is, as you subtly point out, that the end user has to live with sub-par performance. With the hardware performance today I'm not really sure it's a problem though. I mean what do people do with their apps? Facebook? Wordfeud? It doesn't really scream mission criticality..

EDIT: But yes, people also demand strange, and sometimes unrelated and impossible things from the software they download ed virtually for free.

EDIT2: And yes, life and death systems like GPS (maybe not so much for cars) have better work. On the other hand the users who fail aren't really around to complain. :)
Ha ha, You sense my feeling! :))

I do like new car, the 2018 is my big boss turn to buy, so it's her problem. But I like to buy a new one in like 2 years, I have absolutely NO CAR I want new after looking at the 2018 and reading Motor Trends.

I did not even mention we have a HP business all-in-one printer sitting there looking pretty( sarcastic) for the last 3 years that is no working well, worst than the Canons.(emphasize the "s" at the back). We had an old HP business type we used for over 10 years, consistent, reliable. we should have spent the money to fix it when it broke down if we knew the new ones are this bad. Sadly it's in the junk yard. We paid good money for the HP!

Yes, we had to order the most primitive model to avoid the self driving, lane assist, self stop ones when we bought the 2018. I don't trust all those stuffs. The newer model of my 2014 bragging that if the wheel gets into a pot hole, it can "hop" out! can you imagine if it goes crazy, it can hop down the road when you drive...like those low riders! No thanks. My stepson had a 4 or so years old SUV that had self adjusted suspension. Something went wrong and the thing tilt to one side. Over $4000 to fix that as it's just out of warranty.EDIT: If you look at Consumer Reports on cars. Look at all the upscale cars, they ALL have electronic problems. Believe me, it's NOT hardware problems, all software. My 2018 car, they never change anything, they just kept updating the software.
 
Last edited:
  • #47
yungman said:
Processor is at least 1000 times faster today than from the 70s.
And then some. The Apple //e I bought in 1981 or so had a processor that ran at 1.023 Mhz. My 7-year-old HP with a Quad Core Duo Intel processor runs at 3.40 Ghz, more than 3,300 times as fast, not to mention that it can be running 8 threads simultaneously at that clock rate.

I have a newer Dell desktop that is running a 10-core Intel Xeon Scalable processor. Its clock speed is about 2.40 Ghz, which is less than that of my older computer, but then the new one can potentially run 20 threads at the same time. More importantly for me, it is capable of running code that uses AVX-512 assembly code, which the older computer can't do. The new one has registers that are 512 bits wide, so can process multiple data values with one instruction.
yungman said:
Even the Visual Studio that I am using for C++, it's a daily thing to have to close it and open again when it start doing funny things. It is NOT the fastest program by a long shot. How many times I have to actually restart the computer as VS behave funky.
That's not the normal behavior for VS. Either there is something wrong with your computer, or you have installed VS incorrectly. I've been running VS in various versions for the past 22 years. I'm currently running VS 2017 -- I can leave it running for weeks with no problems.
yungman said:
So it got to be NOT the wish of the marketing, must be programmers want to be fancy.
I disagree. I think it's the marketing people wanting to put more bells and whistles on what is essentially a motorized toaster. They come up with features, and it's the programmers whose job it is to implement those features.
 
  • #48
Mark44 said:
And then some. The Apple //e I bought in 1981 or so had a processor that ran at 1.023 Mhz. My 7-year-old HP with a Quad Core Duo Intel processor runs at 3.40 Ghz, more than 3,300 times as fast, not to mention that it can be running 8 threads simultaneously at that clock rate.

I have a newer Dell desktop that is running a 10-core Intel Xeon Scalable processor. Its clock speed is about 2.40 Ghz, which is less than that of my older computer, but then the new one can potentially run 20 threads at the same time. More importantly for me, it is capable of running code that uses AVX-512 assembly code, which the older computer can't do. The new one has registers that are 512 bits wide, so can process multiple data values with one instruction.
That's not the normal behavior for VS. Either there is something wrong with your computer, or you have installed VS incorrectly. I've been running VS in various versions for the past 22 years. I'm currently running VS 2017 -- I can leave it running for weeks with no problems.
I disagree. I think it's the marketing people wanting to put more bells and whistles on what is essentially a motorized toaster. They come up with features, and it's the programmers whose job it is to implement those features.
I hate to re-download VS and reinstall again, takes a long time! Some days, I have to restart the computer 4 or 5 times. My computer is always stable until VS. It's quite new, just 3 to 4 months old and it's the latest gen HP I-5. Funny, of all electronics, my laptops do last! I bought this one because my last one lock me out. I had a thread on this and I solved the problem after a few days. But I have no patience, I bought this one in case I cannot get into the old one. Now I have two good laptop. the last one is 4 years old, I would have keep using that if not for the lock out. I like the new 15.6" anyway, bigger screen make it easier to layout pc boards. Yes, I still do a lot of those.

I cannot imagine marketing people want those joy stick and touch pads all over the car, I am not the only one complain about it, even the car magazines keep complaining about the infotainment of of those cars. It is down right dangerous trying to navigate the control while driving. You have to take your eyes off the road to look at the screen! And then the reliability. How many loaner cars we had to drive. Problem never been solve, we just gave up. We just don't talk about it, drive it for a few more years and get rid of it. Big boss never even wash the car once yet, she used to keep the older one so nice. Don't know how they get the EPA numbers, gas mileage is WORST than my 2014 SUV and worst than the old car of the same model we replaced. That was a 2003.
 
  • #49
yungman said:
I hate to re-download VS and reinstall again, takes a long time!
VS is a large image to download, so if you do it over a wireless modem, it will take a lot longer. My two desktops are connected via ethernet cables to a switch and then to the modem. If I need to download something large to my laptop, I can plug it into a third ethernet cable.

The download speed also depends on what speed your internet provide supports.
yungman said:
Some days, I have to restart the computer 4 or 5 times. My computer is always stable until VS.
Which says to me that your VS installation is flaky.
 
  • #50
yungman said:
I cannot imagine marketing people want those joy stick and touch pads all over the car
I cannot imagine marketing people abiding to fancy demands of programmers over their wishes.
 
  • #51
jack action said:
I cannot imagine marketing people abiding to fancy demands of programmers over their wishes.

If "the programmers" happen to be the lucky ones inventing the next step in sociological connectedness crammed into an android-like device they might be buying the cars. :)
 
  • #52
jack action said:
I cannot imagine marketing people abiding to fancy demands of programmers over their wishes.
Then something is really wrong. I am not talking about just cars. Everything I bought that involve electronics other than laptops all screw up in their own way. I wasn't even going to respond already, I just had a battle with my stupid Canon all-in-one. Stupid printer does NOT allow you to change ink cartridge until it is empty and signal you to change. I already had problem with one, talked to Canon and they had to send me a new one because one ink cartridge went bad. I was told there is no way to change it out. Now I have a bad "black" cartridge, I cannot change it. I tried to turn off the power and turn it on, thinking the printer always move the cartridge out when power on or power off. I thought I can catch it while it is out and push it to the changing spot and pull the cartridge out. Guess what? It is so wise that the moment I open the door, the ink carriage retreat back to lock position! Who invent this? Don't they have defect cartridge. So if one defect cartridge, you throw away the printer? It might be comical if it's not so frustrating. Imagine you have your hands ready, push the power button, hurry open the door and catch the carriage like in cartoon trying to catch a mouse, AND you get out witted every time! AND you cannot leave the door open to turn off the power, it will tell you to close the door!

We have a business, we don't buy cheap printers. This stupid canon costed over $130 where their lower line are like $59.99. This is a business printer, not those weekend warrior stuff. The HP is over $300. It is there sitting pretty. It's an adventure every time we want to print something. How many times I have to unplug the power cord to the printer to reset it. This, is NOT the only one. As I said, I must have change 5 or 6 printers in the last 3 years. this canon is only 4 months old, a replacement by Canon! I would have bought a new one if I know which one is good. One that doesn't ask a million questions and does it wrong anyway!

Maybe I should not say too much I have no problem with laptops. My wife had two consecutive Lenovo laptop that were bad. They too were not cheap ones with SSD drive. They are regardless of price and brands.
 
  • #53
yungman said:
I just had a battle with my stupid Canon all-in-one. [...] Imagine you have your hands ready, push the power button, hurry open the door and catch the carriage like in cartoon trying to catch a mouse, AND you get out witted every time!
You shouldn't say that. Being outwitted by a stupid machine: What does it say about you? :wink::biggrin:

Anyway, I left the ink printers for a laser one. Initially more expensive, but they seem to be less stupid.
 
  • Like
Likes yungman
  • #54
yungman said:
It is so wise that the moment I open the door, the ink carriage retreat back to lock position!
It can't move anything if you pull the plug out.
 
  • #55
jack action said:
You shouldn't say that. Being outwitted by a stupid machine: What does it say about you? :wink::biggrin:

Anyway, I left the ink printers for a laser one. Initially more expensive, but they seem to be less stupid.
Ha ha, today I can laugh about it, I was really steaming last night. Just imagine how stupid it looks have the hand ready trying to catch it and missed. It's funny today. I remember one time when there's a paper jam, the carriage was unlock and out. Maybe today I will partially open the back side where it's for flipping the paper to print on the other side, that will definitely jam the printer. We'll see whether I can win the cat and mouse thing this time!
 
  • #56
yungman said:
We have a business, we don't buy cheap printers. This stupid canon costed over $130 where their lower line are like $59.99.
If you're using a printer in a business, you really should spring for one that can handle business-type loads. A printer for $130 is more expensive than one for $60, but they're both cheap printers, probably not intended for heavy use.
 
  • #57
Mark44 said:
If you're using a printer in a business, you really should spring for one that can handle business-type loads. A printer for $130 is more expensive than one for $60, but they're both cheap printers, probably not intended for heavy use.
My HP one is over $300, just as bad if not worst, that's why it's sitting there for 2 years doing nothing. You can't go by the price. Everything that I complained about here are upper class models, nothing cheap. Like the tvs are Samsung 82" smart tv.....There lies the problem. I know how to use the tv, I am at the point I can be blind folded and work the remote. Sometimes, the lower models and brands are much more reliable as they sell in large quantity. Like the Toyota Corolla, Honda Civics are the utmost reliable cars according to consumer reports. I bet they don't have none of the problems I experienced. If you look at consumer reports on April issue on cars, you can see a clear trend. Like reliability of Acura ( from Honda) is not even close to the reliability of Hondas. Even Lexus ( from Toyota) is not as good as Toyota. European cars are $hit! you buy the name, you pay for the fixing.
 
  • #58
I might have put this one in the lame jokes thread, but I figured it fit well in this thread:

which_programming_language_is_best.jpg
 
  • Like
  • Haha
Likes yungman, hmmm27 and lomidrevo
  • #59
The Canon is so intelligent, I got the paper to jam and the carriage was released. BUT guess what...When I moved the cartridge to the correct position and try to push the release button...IT would not work, it disengage the button so it would NOT release the cartridge. This is the end of the road unless I am willing to take the printer apart. Pulling the power cord during printing will not make any difference if the button is locked out. Great job.

I am looking at this one from recommendation, I don't know whether it is better. At least it's not Canon or HP.
https://www.amazon.com/gp/product/B07QNRKL6J/?tag=pfamazon01-20

I kind of have to stay with inkjet because big boss is into arts and crafts, I don't think Lazar will give good quality enough for her. I don't mind paying $500 or more if I can get a good one.

Actually I was WRONG in the price of my Canon, this is the one:
https://www.amazon.com/dp/B01IIOMMRS/?tag=pfamazon01-20

It's $270 now. Mine is only about 4 to 5months old. I lost track how much I paid already! I know it's not an amateur printer. Just look at the picture.
 
Last edited:

Similar threads

Back
Top