hahahahaaa...I could have made this (in C)
Found this video this morning and it made me smile. It resonates close to my view of the world too. Apologies upfront, if I become an old man and wander off telling you a much longer story linking into the theme so you can get context of what I'm trying to explain. Apparently, I've hit "that age"...
I recall being taught MODULA-2, PASCAL and then C back in the 1988-1992 period of time.
Maybe I just missed those classes at University in late 1992/1993 when they started to talk about C++, I didn't get it, the fact I can still remember the pain of having to try and write a shed load of code to draw a Christmas tree on the screen, with baubles (circles) and the tree structure (triangles) all doing tons of code to setup a structure for object-orientation just for the sake of it.
My view, every 10 lines of code you write you introduce a bug of some sort. You've written 100 lines for a Christmas tree in C++... I even remember getting so annoyed I re-wrote the whole thing in C in about 20 lines of code and failed the assessment, because even though I met the objective (getting a Christmas tree to be drawn on the screen and have flashing coloured baubles, I hadn't written it in the way the lecturer wanted to mark it). Funny thing is, if I then think about my IT career (if I can call it that), I never really had to do strict OOP
and his point about coding for PS1 - well, you know I did that back in 1996...in C, so I totally get it! I still have my Yaroze PS1 in a cupboard upstairs :-) Those were the days....
As I say, if I think about it, my first IT job involved some coding in a programming language called ZUG (I cannot find a wikipedia link, but it was a language written by some Canadians for insurance companies back in the 80/90s and it was a blur between COBOL, BASIC and C...very funky), then I moved onto DELPHI (thanks to Frank!), which to be fair was Object-Orientated PASCAL, but it didn't "feel like it", that sounds odd, but it didn't have the hassle of C++ OOP, it was component orientated, which made sense to me in 1995/1996 and also it was visual, you had a visual representation of the component....maybe that was it? Then I moved into using EQUINOX a 4GL (yeah, I went there!), but I didn't like that level of high-level abstraction....I was still fighting to use DELPHI 2....
If you visit here, you can see a screenshot on the left - my one lasting legacy of working there:
That yellow modal dialog box, I wrote that in DELPHI 2 inside a DLL because the 4GL was not capable of having dynamically driven dialog boxes that could have different visual components, for instance, some might have 2 text areas of information, some 3, some 4, some would have 2 buttons, some 3, some 4 and choose your choice of background colour too - the 4GL company wouldn't build that but it was needed, so I spent some weekends making this for my boss (at the time) to then show him how simple it was to make this in DELPHI 2 - foolishly I thought he would say, "hey that's great, let's ditch the 4GL and re-write everything, all my companies products in DELPHI". Yeah, youthful ignorance huh. no, it didn't happen. But that DELPHI 2 dialog box still lives on and is still shown to people to this very day.
I digressed. Then I switched to more of a Consultant role so was hands off for a while, but still kept the DELPHI connection and ORACLE databases crept into the equation and then HTML3, then 4. Oooo, that DELPHI 2 work with DLLs, well you could call that code from HTML pages and I then started to work at a car manufacturer who had a ton of C programmers who were making what was called CGI (not the movie animations), but DLLs written in C to do backend stuff in databases.
I was again, loving working with C and ORACLE... even dabbled a little bit into JAVA v1.0 and then I branched out to work somewhere else taking my WEB, DELPHI and ORACLE skills with me.
I did that for a major European railway organisation for a few years, expanding my WEB skills to now include ASP (yes, I also went there!), Active Server Pages, if you wanted to know....I became a bit of a Microsoftie for a while as they seemed to have a plan for the Internet and the WEB.
I then moved into "management" and wasn't allowed to get hands-on. That erked me for years, I knew something was wrong, but couldn't put my finger on it until I took a job at a start-up company called AVANTGO. That was a breathe of fresh air. We were using (at the time) state of the art mobile devices to do things that were unthinkable at the time (totally obvious now, 20 years later).
This involved writing code to run on Palm devices, COMPAQ iPAQ devices, Microsoft Phones, HP Jornada devices, Handspring Palm devices, industrial devices you see your postman or DHL using today....and it was all fronted by a web-browser application - that was written by the great team of engineers that had just left NETSCAPE.
Whilst the basis was to have web pages offline, that was just a gimmick, the real Enterprise sell, was to have web application running "occasionally online", so mostly you were running web apps offline and how did you do that?
With JavaScript on the device and JavaScript server-side and if you needed to tap into the specific device itself, you had to do that in.......wait for it.......yep, C! (we called this PODS, I was probably 1 of about 3 people in the company who could do this at the time), basically they were C DLLs that you could invoke from JavaScript code to do all sorts of things, interact with Cameras, gather signatures, all the things that you can now do with iPhone/Android via a bunch of APIs.
Then we were bought by SYBASE and this is where I tie this all together, the coders there were all Waterloo University educated, never worked anywhere else, not seen any other part of the world or experienced any other way of working and they had a 100% view of a JAVA and OOP. They could not get their heads around the fact we were writing code in JavaScript and C that did the job in the most efficient and minimal way possible, because we were using devices that, if we were lucky had 4MB of RAM.....yes, re-read that, 4MB and you didn't get all of that to use, you had maybe 2MB if you were lucky....so you had to be mean and lean.
Whilst I'm chewing the fat here like an old guy with a beer at a bar, I'll point out that I once attended a training session in that Canadian office to teach me and others how to write JavaScript and interact with PODS. I laughed so hard that one of the Daves (they were all called Dave for some odd reason), got so flustered he called me out on it hoping to embarrass me in front of the other learners, that when I asked him why the code file was written in the way it was he couldn't explain why. I then stood up, walked to the whiteboard that was being used to project onto and started to use a dry marker to explain the JavaScript code and why it was written in a non-OOP way and how the C PODS was written the way it was, there were silly things also, such as a for loop that was written backwards.
Every one knows the structure of a for loop where there is a :
for(int i=0; i < someVal; i++)
pretty standard syntax just needs tweaking for whatever language you are using. Well, we found out that in JavaScript on these limited resourced devices that the Garbage Collection system internally freed up memory more quickly if you did it this way:
for(int i=someVal; i > 0; i--)
I think that was it? you get the idea though, instead of counting up, we would could down and in the loop code we could clear the entry we'd finished using and set it to null and clean up the memory.
Anyway, the Daves started to get a bit shirty and asked me to sit down and stop disrupting as they were "teaching", I asked them to scroll up to the top of the code files they were presenting.
And lo-and-behold, in the top of the files comments there was the name of the author of the file with commented history (this was way before github was a twinkle in the eye of anyone) and guess who's name was there....yep, mine. That, as I explained was why I was laughing at you guys, you were trying to teach me how to code in something I wrote. I didn't like SYBASE or the people there and they knew it. After that incident, they took it upon themselves to have masterclasses in OOP and class designs and they made all their coding for the product using OOP techniques. I recall trying to reason with the Director of Engineering once, explaining that whilst it was easy to write 1000s of lines of JavaScript code on a desktop PC and run it in a Desktop web-browser when you run that for real on a real device it is going to suck...badly.... I was told, "then we'll make the hardware people make the hardware run faster to handle it"
So, that for me was the crux of why OOP (in my opinion) was bad news. It made peoples minds inflexible, they could and would only do things in one way and then they would expect everything else around them to change to make it work, rather than doing it the other way around. Maybe that's just something about the way some peoples brains are wired, I don't know.
I remember doing some stuff with C# (as it was written by the guy who had designed DELPHI), so I thought I'd give it a go...it was pretty much the same as JAVA was at the time, so I gave it some time/effort but not too much.
Anyway, I left SYBASE and then they went down the pan, that Mobile iAnywhere product line failed (I wonder why?!) and SAP bought SYBASE and then stripped it of all the useful assets and threw out most of the Daves. *disclaimer - there were some nice Daves.
I then moved onto another start-up called Lombardi (Software) and that was doing stuff in BPM (Business Process Management), that was taking me back to my Consulting days, but still being able to get hands-on...and you guessed it, you could write the server-side code in JavaScript...well, wasn't that handy....and also in non-OOP JavaScript! landed on my feet there didn't I :-)
Whilst all this was going on, in the background I was buying and using and learning how to do things with ARDUINO devices...and guess what code you write for them?...yep.....C.
So you can see, C didn't go away, it didn't roll-over and get replaced - it's still there, it's still relevant, it's what LINUX is written in, it's not going anywhere.
The Raspberry Pi devices, whilst most people will use Python with these as it's quick, simple and easy to do, will eventually realise that yep, you can also code in C on these devices really well and I don't mean C++, I mean just C.
I then got bought by IBM, or should I say Lombardi got bought and I got acquired by IBM, that was over 10 years ago now. My skillsets in JavaScript and C have done me well over those 10 years. My ability to adapt to the CLOUD and SaaS, IaaS and PaaS...has done me well.
I've extended the JavaScript and C to NodeJS, AngularJS, Android JAVA, iPhone Objective C, in-fact I was up last night until 2am writing some code in JAVA using WebSphere Liberty Profile for my current project team as none of them have any JAVA coding skills, they are 100% JavaScript (NodeJS and ReactJS) and they seem to assume that "everything" can be done in JavaScript and if it cannot, it shouldn't be done until someone invents how to do it in JavaScript.
Whilst I love that mindset - kind of reminds me of my early views/days, there are times you have to expand and do the job in a different tool. Having just a screwdriver in your toolbox will get you so far, but having a couple of spanners and a hammer will make you much more useful. The day you can do POI in JavaScript will be a good one :-D
So, go forth and remember C will always be there......learn it.... (and no I am not going to explain pointers to you)
What am I doing today?....well, if I said, "AI"....what would you think?....
I recall being taught MODULA-2, PASCAL and then C back in the 1988-1992 period of time.
Maybe I just missed those classes at University in late 1992/1993 when they started to talk about C++, I didn't get it, the fact I can still remember the pain of having to try and write a shed load of code to draw a Christmas tree on the screen, with baubles (circles) and the tree structure (triangles) all doing tons of code to setup a structure for object-orientation just for the sake of it.
My view, every 10 lines of code you write you introduce a bug of some sort. You've written 100 lines for a Christmas tree in C++... I even remember getting so annoyed I re-wrote the whole thing in C in about 20 lines of code and failed the assessment, because even though I met the objective (getting a Christmas tree to be drawn on the screen and have flashing coloured baubles, I hadn't written it in the way the lecturer wanted to mark it). Funny thing is, if I then think about my IT career (if I can call it that), I never really had to do strict OOP
and his point about coding for PS1 - well, you know I did that back in 1996...in C, so I totally get it! I still have my Yaroze PS1 in a cupboard upstairs :-) Those were the days....
As I say, if I think about it, my first IT job involved some coding in a programming language called ZUG (I cannot find a wikipedia link, but it was a language written by some Canadians for insurance companies back in the 80/90s and it was a blur between COBOL, BASIC and C...very funky), then I moved onto DELPHI (thanks to Frank!), which to be fair was Object-Orientated PASCAL, but it didn't "feel like it", that sounds odd, but it didn't have the hassle of C++ OOP, it was component orientated, which made sense to me in 1995/1996 and also it was visual, you had a visual representation of the component....maybe that was it? Then I moved into using EQUINOX a 4GL (yeah, I went there!), but I didn't like that level of high-level abstraction....I was still fighting to use DELPHI 2....
If you visit here, you can see a screenshot on the left - my one lasting legacy of working there:
That yellow modal dialog box, I wrote that in DELPHI 2 inside a DLL because the 4GL was not capable of having dynamically driven dialog boxes that could have different visual components, for instance, some might have 2 text areas of information, some 3, some 4, some would have 2 buttons, some 3, some 4 and choose your choice of background colour too - the 4GL company wouldn't build that but it was needed, so I spent some weekends making this for my boss (at the time) to then show him how simple it was to make this in DELPHI 2 - foolishly I thought he would say, "hey that's great, let's ditch the 4GL and re-write everything, all my companies products in DELPHI". Yeah, youthful ignorance huh. no, it didn't happen. But that DELPHI 2 dialog box still lives on and is still shown to people to this very day.
I digressed. Then I switched to more of a Consultant role so was hands off for a while, but still kept the DELPHI connection and ORACLE databases crept into the equation and then HTML3, then 4. Oooo, that DELPHI 2 work with DLLs, well you could call that code from HTML pages and I then started to work at a car manufacturer who had a ton of C programmers who were making what was called CGI (not the movie animations), but DLLs written in C to do backend stuff in databases.
I was again, loving working with C and ORACLE... even dabbled a little bit into JAVA v1.0 and then I branched out to work somewhere else taking my WEB, DELPHI and ORACLE skills with me.
I did that for a major European railway organisation for a few years, expanding my WEB skills to now include ASP (yes, I also went there!), Active Server Pages, if you wanted to know....I became a bit of a Microsoftie for a while as they seemed to have a plan for the Internet and the WEB.
I then moved into "management" and wasn't allowed to get hands-on. That erked me for years, I knew something was wrong, but couldn't put my finger on it until I took a job at a start-up company called AVANTGO. That was a breathe of fresh air. We were using (at the time) state of the art mobile devices to do things that were unthinkable at the time (totally obvious now, 20 years later).
This involved writing code to run on Palm devices, COMPAQ iPAQ devices, Microsoft Phones, HP Jornada devices, Handspring Palm devices, industrial devices you see your postman or DHL using today....and it was all fronted by a web-browser application - that was written by the great team of engineers that had just left NETSCAPE.
Whilst the basis was to have web pages offline, that was just a gimmick, the real Enterprise sell, was to have web application running "occasionally online", so mostly you were running web apps offline and how did you do that?
With JavaScript on the device and JavaScript server-side and if you needed to tap into the specific device itself, you had to do that in.......wait for it.......yep, C! (we called this PODS, I was probably 1 of about 3 people in the company who could do this at the time), basically they were C DLLs that you could invoke from JavaScript code to do all sorts of things, interact with Cameras, gather signatures, all the things that you can now do with iPhone/Android via a bunch of APIs.
Then we were bought by SYBASE and this is where I tie this all together, the coders there were all Waterloo University educated, never worked anywhere else, not seen any other part of the world or experienced any other way of working and they had a 100% view of a JAVA and OOP. They could not get their heads around the fact we were writing code in JavaScript and C that did the job in the most efficient and minimal way possible, because we were using devices that, if we were lucky had 4MB of RAM.....yes, re-read that, 4MB and you didn't get all of that to use, you had maybe 2MB if you were lucky....so you had to be mean and lean.
Whilst I'm chewing the fat here like an old guy with a beer at a bar, I'll point out that I once attended a training session in that Canadian office to teach me and others how to write JavaScript and interact with PODS. I laughed so hard that one of the Daves (they were all called Dave for some odd reason), got so flustered he called me out on it hoping to embarrass me in front of the other learners, that when I asked him why the code file was written in the way it was he couldn't explain why. I then stood up, walked to the whiteboard that was being used to project onto and started to use a dry marker to explain the JavaScript code and why it was written in a non-OOP way and how the C PODS was written the way it was, there were silly things also, such as a for loop that was written backwards.
Every one knows the structure of a for loop where there is a :
for(int i=0; i < someVal; i++)
pretty standard syntax just needs tweaking for whatever language you are using. Well, we found out that in JavaScript on these limited resourced devices that the Garbage Collection system internally freed up memory more quickly if you did it this way:
for(int i=someVal; i > 0; i--)
I think that was it? you get the idea though, instead of counting up, we would could down and in the loop code we could clear the entry we'd finished using and set it to null and clean up the memory.
Anyway, the Daves started to get a bit shirty and asked me to sit down and stop disrupting as they were "teaching", I asked them to scroll up to the top of the code files they were presenting.
And lo-and-behold, in the top of the files comments there was the name of the author of the file with commented history (this was way before github was a twinkle in the eye of anyone) and guess who's name was there....yep, mine. That, as I explained was why I was laughing at you guys, you were trying to teach me how to code in something I wrote. I didn't like SYBASE or the people there and they knew it. After that incident, they took it upon themselves to have masterclasses in OOP and class designs and they made all their coding for the product using OOP techniques. I recall trying to reason with the Director of Engineering once, explaining that whilst it was easy to write 1000s of lines of JavaScript code on a desktop PC and run it in a Desktop web-browser when you run that for real on a real device it is going to suck...badly.... I was told, "then we'll make the hardware people make the hardware run faster to handle it"
So, that for me was the crux of why OOP (in my opinion) was bad news. It made peoples minds inflexible, they could and would only do things in one way and then they would expect everything else around them to change to make it work, rather than doing it the other way around. Maybe that's just something about the way some peoples brains are wired, I don't know.
I remember doing some stuff with C# (as it was written by the guy who had designed DELPHI), so I thought I'd give it a go...it was pretty much the same as JAVA was at the time, so I gave it some time/effort but not too much.
Anyway, I left SYBASE and then they went down the pan, that Mobile iAnywhere product line failed (I wonder why?!) and SAP bought SYBASE and then stripped it of all the useful assets and threw out most of the Daves. *disclaimer - there were some nice Daves.
I then moved onto another start-up called Lombardi (Software) and that was doing stuff in BPM (Business Process Management), that was taking me back to my Consulting days, but still being able to get hands-on...and you guessed it, you could write the server-side code in JavaScript...well, wasn't that handy....and also in non-OOP JavaScript! landed on my feet there didn't I :-)
Whilst all this was going on, in the background I was buying and using and learning how to do things with ARDUINO devices...and guess what code you write for them?...yep.....C.
So you can see, C didn't go away, it didn't roll-over and get replaced - it's still there, it's still relevant, it's what LINUX is written in, it's not going anywhere.
The Raspberry Pi devices, whilst most people will use Python with these as it's quick, simple and easy to do, will eventually realise that yep, you can also code in C on these devices really well and I don't mean C++, I mean just C.
I then got bought by IBM, or should I say Lombardi got bought and I got acquired by IBM, that was over 10 years ago now. My skillsets in JavaScript and C have done me well over those 10 years. My ability to adapt to the CLOUD and SaaS, IaaS and PaaS...has done me well.
I've extended the JavaScript and C to NodeJS, AngularJS, Android JAVA, iPhone Objective C, in-fact I was up last night until 2am writing some code in JAVA using WebSphere Liberty Profile for my current project team as none of them have any JAVA coding skills, they are 100% JavaScript (NodeJS and ReactJS) and they seem to assume that "everything" can be done in JavaScript and if it cannot, it shouldn't be done until someone invents how to do it in JavaScript.
Whilst I love that mindset - kind of reminds me of my early views/days, there are times you have to expand and do the job in a different tool. Having just a screwdriver in your toolbox will get you so far, but having a couple of spanners and a hammer will make you much more useful. The day you can do POI in JavaScript will be a good one :-D
So, go forth and remember C will always be there......learn it.... (and no I am not going to explain pointers to you)
What am I doing today?....well, if I said, "AI"....what would you think?....
Comments
Post a Comment