Computer programming for fun and profit

(raises hand)

6 Likes

(also raises hand)

Although I’m a EE who took a few CS classes

(slowly lowers hand)

4 Likes

brain “ruined by Basic”
:raised_hand_with_fingers_splayed:

3 Likes

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.

3 Likes

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?

2 Likes

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??!??!?

5 Likes

Yeah, don’t get me started on that – and the evils of Hungarian notation.

2 Likes

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.)

3 Likes

You won’t, because the people who do that were all born in, like, the 80s or something /s

5 Likes

image

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.

1 Like

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.

3 Likes

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. :smiling_imp:

3 Likes

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.

4 Likes

7 Likes

… 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” :slight_smile:

2 Likes

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?

3 Likes

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:

  1. Possess an engineering degree
  2. Maintain an engineering license
  3. Operate a choo-choo
2 Likes

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.

5 Likes

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

2 Likes