(raises hand)
(also raises hand)
Although Iâm a EE who took a few CS classes
(slowly lowers hand)
brain âruined by Basicâ
My path was even more roundabout than that⌠I majored in Radio-TV-Film (making content for 'em, not fixing 'em), and along the way one professor taught us about Ohmâs law and that got me into electronics in general.
C# has quite a bit of dynamic typing that lazy programmers love to use but itâs not required in most cases. To me dynamic typing is just fucking evil unless thereâs an application where itâs appropriate (such as literally defining a dynamic type on the fly for JSON serialization or something).
var foo = this.bar.DoSomething();
If Iâm in Visual Studio and use IntelliSense I can easily see that âfooâ is of type âQuxâ. Wonderful. What if Iâm looking at code in a web browser or notepad? Why shouldnât I be able to just glance at the code and know what something is?
For all its flaws, and they are legion, that was one thing I thought VB got right: passing args as ByVal or ByRef is pretty bleedinâ unambiguous. (Of course, I never revisited my early efforts to learn c++ twenty years ago; is there an aspect Iâm missing there?)
Oh thatâs easy, just append âstrâ or âintâ to the namââ OWW, WHO THREW THAT??!??!?
While I will (reluctantly) admit to having done shoddy things like that in my misspent youth, I do advocate for the liberal usage of the proper version of HN (referred to as Apps Hungarian in the Wikipedia article). In other words, if a string is unsanitized, name it as such, and you (or whoever comes after you) become a whole lot less likely to pass it to the DB or the browser without cleaning it first. (Though I would never say that every variable needs a prefix, only the few where it truly makes sense.)
You wonât, because the people who do that were all born in, like, the 80s or something /s
I hate it how nowadays the vast majority of people who write code think that that everything is either a web front end or a back end that comes with a web front end.
Care to elaborate? I went from C++03 to C++11 to C++14 to C++17, and I have no clue what you are referring to.
Thatâll be a very long course. Iâve learned some abstractions that way, by first getting the hang of them in a lower-level language and then using the higher-level language as a convenient shorthand for it. But I also know of too many people who got stuck writing Go and never progress to higher-level languages.
Iâm an EE who can program well enough to be dangerous. Iâve done plenty of work on systems that are in use in the real world, but in precisely none of them was the software a customer facing component. Also, in very few of them (if any) were the customers Joe and Jane Consumer, but more likely government and commerical entities, research labs, etc. So when a recruiter asks me if I am a front end or back end developer I have to reply that Iâm not a âdeveloperâ at all. If theyâre looking for someone to develop commercial software, theyâre barking up the wrong tree, but theyâd know that if they bothered to read my resume.
The only question I hate more than that is âdo you develop web apps or desktop appsâ >___<
I was referring to the auto keyword, and other associated fuckery relating to runtime typing.
The fact that Rust doesnât pop up in this threads makes me sad. Iâm learning Rust right now itâs fun to actually learn something that isnât stuck in the DotNet stack.
Python is great for data analysis/processing and scientific computation because of the libraries. Itâs also good for quick, small automation scripts. Iâve found that, once a project gets beyond a certain size, dependence on external libraries and the lack of type safety really start to bite you.
⌠but the auto keyword has nothing to do with runtime typing. Itâs pure static typing. It just relieves you from writing out the same type over and over again. Allowing you to use more static typing, not less, before people use less meaningful types in order to avoid having to type to much⌠(pun not avoidable).
In fact, I canât think of any âfuckery related to runtime typingâ recently introduced into C++ (exceptions and RTTI are the only run-time-type related features I can think of, and theyâre both from the second millenium).
I understand, but at least almost everything that doesnât require a web browser to run can somehow be made to run on a desktop computer (if only for testing) and can thus be described as a âdesktop appâ
Python, the language that compiles down to ⌠something ⌠itâs sure not native code, and it really shows it in performance. (Yes, there are native code compilers out there, but I doubt many people use them.)
I canât believe people use it for data crunching and analysis, or hahaha cryptocurrency mining. (Probably with C libraries or something.)
Virtual environments that take a big snapshot of all those libraries so that your project wonât bit-rot in a week when one of them breaks its interfaces. Of course, later fixes and security patches wonât happen unless you take the time to update all the snapshots, but who has the time for that?
I hadnât thought about (or, didnât remember) there being a difference. As Iâve previously mentioned, I donât really write any code. But in my case, if someone asked me whether I was a computer programmer, a software developer, or a sysadmin, my answer would be: âYes.â
My company pays me to be a âsystems analystâ but I donât really think thatâs what I do. According to Webster, âsoftware engineeringâ might describe what Iâve done, at one time or another, but I believe that the term âengineerâ should be reserved for those who do one or more of the following:
- Possess an engineering degree
- Maintain an engineering license
- Operate a choo-choo
I donât develop software that is the end product. It is always software that makes something else run. The software I write does not go onto a computer, nor does it go onto a cloud architecture with millions of users. This makes me an embedded developer, i guess, but not always.
I would answer yes, yes, and no.
But really I think the differences are that software developers are (traditionally) the people who assume the sensor data, motion control, etc are all a black box, and Iâm the one who builds that black box.
I possess undergraduate and graduate degrees in engineering. I passed the FE/EIT with flying colors but was told by a PE that I worked with that I shouldnât go for a PE license. The license is a lot of hassle and only useful or necessary if i work in public safety, which i donât. That PE was the only PE Iâve ever worked with, and this was decades ago.
I think all Civil Engineers need licenses to be considered engineers, but not the rest of us, especially when the vast majority of us donât have licenses or even need them. I donât even think one needs a degree to be an engineer as long as they can do the work.
iâd start with logo, or whatever its current equivalent is. ( maybe something with legos and motors. )
teaching people to break down a task into whatever arbitrary commands the software wants seems a good first step. and introduces all of the loops and flow control concepts in a nice, simple way.
trying to explain what a move operator is, what l value, and r value semantics are, how pointers work, what the differences between pointers and references are⌠why some people put return declarations on the right side, some the left, scoping and capture in lambdasâŚ
c++ is a great language that has grown painfully large. itâs hard to imagine anyone is an expert anymore unless they are on the c++ committee.
i use golang a bunch these days, and even though it has some really ( really ) annoying behaviors - by and large itâs both clean and powerful.
not that i can imagine c and c++ going away anytime soon