Better at 90's programming than modern programming?

Page 1 of 4 [ 49 posts ]  Go to page 1, 2, 3, 4  Next

2fefd8
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 25 Jul 2012
Age: 36
Gender: Male
Posts: 44

27 Aug 2012, 8:50 pm

Trencher93 wrote:
MyFutureSelfnMe wrote:
I disagree with the poster who said he can work more efficiently at the command line


I've always used Emacs and the command line. What's strange is that everyone talks about how fast I complete tasks. They're amazed at how quickly I get things done. I'm not that fast, I just don't have layers between me and what I'm trying to do. I think the IDE was designed to slow programmers down and interfere with getting work done.


I've also found that emacs and the command line greatly increase productivity. It helps that emacs is so customizable that you can get it to behave pretty much however you want.

The only disadvantage to using these tools is the greater learning curve (which tends to scare a lot of people away). IDEs are designed with average and below average programmers in mind and for this reason they are fairly easy to use (otherwise these users wouldn't use them). However, they are not as efficient once you become a proficient emacs user.



2fefd8
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 25 Jul 2012
Age: 36
Gender: Male
Posts: 44

27 Aug 2012, 8:57 pm

Comp_Geek_573 wrote:
Back in the good old days of DOS, programming was simple: you write a set of instructions, it goes through them one by one, and if there is a problem during the run it will take you right to the line where the error occurred, and you could figure out what led to it. Granted I didn't really know how to use functions and classes to organize code then, but they did exist.

But now, more and more complicated development environments make debugging nearly impossible. Granted that putting code into functions and classes improves organization and readability, but I've worked with several environments that don't even (by default) tell you what line in your program (or the last line you wrote before some pre-made code deeper down) it was on when a run-time error occurs! This leaves me either running it again and again with debugging hacks to find the problem, or else trying to find out how the heck to use the special-purpose "debugger" for this.

I've aced programming assignments in school, but school is not likely to teach me anywhere near 100% of what I'll need for the real world. My professors might be giving me TOO many functions, classes, etc. to start with!

Although if I can get a job I'm unlikely to be programming anything completely from scratch, at least.


You might be able to get away with not organizing your code in small programs but in large programs, it will quickly become very difficult to manage. Also, if you need to modify your code later on, bad organization will make it harder to read and modify.

You should probably just practice this by writing a number of programs from scratch and breaking things up into different functions (or classes/methods if you prefer OO).



Comp_Geek_573
Veteran
Veteran

User avatar

Joined: 27 Sep 2011
Age: 39
Gender: Male
Posts: 699

27 Aug 2012, 9:01 pm

noname_ever wrote:
Comp_Geek_573 wrote:
Back in the good old days of DOS, programming was simple: you write a set of instructions, it goes through them one by one, and if there is a problem during the run it will take you right to the line where the error occurred, and you could figure out what led to it. Granted I didn't really know how to use functions and classes to organize code then, but they did exist.

But now, more and more complicated development environments make debugging nearly impossible. Granted that putting code into functions and classes improves organization and readability, but I've worked with several environments that don't even (by default) tell you what line in your program (or the last line you wrote before some pre-made code deeper down) it was on when a run-time error occurs! This leaves me either running it again and again with debugging hacks to find the problem, or else trying to find out how the heck to use the special-purpose "debugger" for this.

I've aced programming assignments in school, but school is not likely to teach me anywhere near 100% of what I'll need for the real world. My professors might be giving me TOO many functions, classes, etc. to start with!

Although if I can get a job I'm unlikely to be programming anything completely from scratch, at least.


Are you nostalgic for interpret based languages like BASIC and Quick BASIC? If so, pick a scripting language and run with it.


To be honest, very much so. I did LOTS of QBasic programming in childhood. Another thing is that I've never really had to learn how to use the debugging featues of IDE's, and was never tested on it in school. It should be a matter of just learning the ins and outs of the IDE's for me.

I'd say that original post was one of my worst-put-together here.


_________________
Your Aspie score: 98 of 200
Your neurotypical (non-autistic) score: 103 of 200
You seem to have both Aspie and neurotypical traits
AQ: 33


realitysucks
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 30 Aug 2012
Age: 52
Gender: Male
Posts: 43
Location: (New) Rotterdam

31 Aug 2012, 7:27 pm

Comp_Geek_573 wrote:
Back in the good old days of DOS, programming was simple: you write a set of instructions, it goes through them one by one, and if there is a problem during the run it will take you right to the line where the error occurred, and you could figure out what led to it. Granted I didn't really know how to use functions and classes to organize code then, but they did exist.

But now, more and more complicated development environments make debugging nearly impossible. Granted that putting code into functions and classes improves organization and readability, but I've worked with several environments that don't even (by default) tell you what line in your program (or the last line you wrote before some pre-made code deeper down) it was on when a run-time error occurs! This leaves me either running it again and again with debugging hacks to find the problem, or else trying to find out how the heck to use the special-purpose "debugger" for this.

I've aced programming assignments in school, but school is not likely to teach me anywhere near 100% of what I'll need for the real world. My professors might be giving me TOO many functions, classes, etc. to start with!

Although if I can get a job I'm unlikely to be programming anything completely from scratch, at least.


I was looking back at some code I wrote in 88(in high school). It was in QuickBasic 4.0. Seriously, there is stuff I can do in 2 lines using .net/linq/regex that took maybe 100 lines of disgusting spaghetti code back then.



spaghedeity
Yellow-bellied Woodpecker
Yellow-bellied Woodpecker

User avatar

Joined: 16 Aug 2012
Age: 40
Gender: Female
Posts: 64

31 Aug 2012, 9:26 pm

The only programming language I ever learned was Basic - just never needed to do anything more than a nice 10 20 30 program could do, and now I just don't program. I posted something to that effect recently, I think. I do miss it, though - it felt nice in my head =P



Hermes9
Yellow-bellied Woodpecker
Yellow-bellied Woodpecker

User avatar

Joined: 5 Aug 2012
Age: 44
Gender: Male
Posts: 61
Location: Austin, TX

01 Sep 2012, 3:30 am

Nobody is going to force you to work in an IDE with an object oriented language. It's just that most people actually enjoy working that way. Maybe it is better suited to NT individuals, and we have to work harder to grasp it? No idea, I'm not a programmer by trade (more of the systems/network engineer type) but also find object oriented, highly abstracted programming to be downright frustrating, and it's a big reason I'm a systems/net nerd and not a coder.. My current job sometimes has me delving into C++ to debug and sometimes it's downright maddening... Especially with some of our coders, wow, they probably should be in a different line of work, you should see some of the code comments... like /* This is f'ed, fix it some day if anyone really cares */ -- Good job, folks!!

If you really enjoy programming but don't like the modern object oriented nightmare, maybe assembly or similar low-level programming is your ticket? Firmware engineers make some serious money and that's a skill few programmers can put on the resume -- Not to mention an area with growing demand as embedded devices every day become more and more important.

However, that's not to say that all esteemed NT programmers embrace OO. Those who are bent on code efficiency and directness abhor OO.

Linus Torvalds, pioneer of the Linux operating system and it's kernel, agrees C++ is garbage. As such, the Linux kernel and most of the associated tools, like the source code management system 'git' he also did most the initial work on, are in straight C. Maybe you are the next great kernel developer?! The Linux kernel is an amazing thing, which powers the majority of internet servers today, and knowing how to work with it can land you all sorts of high paying jobs, especially in the embedded systems and hardware peripheral development arenas.

One of Linus's more heated posts regarding his loathing of C++ and OO in general, where he rails on Dmitry who attempted to call him out for not using C++ -- This is a classic!

Quote:
On Wed, 5 Sep 2007, Dmitry Kakurin wrote:
>
> When I first looked at Git source code two things struck me as odd:
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
> it's BS.

*YOU* are full of b------t.

C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles
Bader jokingly said "to piss you off", but it's actually true. I've come
to the conclusion that any programmer that would prefer the project to be
in C++ over C is likely a programmer that I really *would* prefer to piss
off, so that he doesn't come and screw up any project I'm involved with.

C++ leads to really really bad design choices. You invariably start using
the "nice" library features of the language like STL and Boost and other
total and utter crap, that may "help" you program, but causes:

- infinite amounts of pain when they don't work (and anybody who tells me
that STL and especially Boost are stable and portable is just so full
of BS that it's not even funny)

- inefficient abstracted programming models where two years down the road
you notice that some abstraction wasn't very efficient, but now all
your code depends on all the nice object models around it, and you
cannot fix it without rewriting your app.

In other words, the only way to do good, efficient, and system-level and
portable C++ ends up to limit yourself to all the things that are
basically available in C. And limiting your project to C means that people
don't screw that up, and also means that you get a lot of programmers that
do actually understand low-level issues and don't screw things up with any
idiotic "object model" crap.

So I'm sorry, but for something like git, where efficiency was a primary
objective, the "advantages" of C++ is just a huge mistake. The fact that
we also piss off people who cannot see that is just a big additional
advantage.


LOL... Linus is awesome, <3 the guy. And Linux too!

In other news, Bram Cohen, author of the BitTorrent protocol that shook the entire world of file sharing and sent waves through the intellectual property community, is a self-diagnosed aspie. 8)



MyFutureSelfnMe
Veteran
Veteran

User avatar

Joined: 26 Feb 2010
Age: 44
Gender: Male
Posts: 1,385

01 Sep 2012, 1:54 pm

Wow, Linus, settle down :)

If you want a stark example of how C++ can be superior to C, look at RapidXML. This is a DOM based XML parser with weak validation. The entire library uses nothing but C++ templates, and because of the clever use of templates, the machine code generated by the compiler becomes highly specialized for the specific parsing task the caller is doing. Because of that, RapidXML performs about as well as the C strlen() function on the same data, yet it organizes the entire DOM into a tree that can be traversed. This is not something that could have been accomplished in any reasonable way in C.

Additionally, when I work in C, I find myself extensively simulating objects by using structs, even for relatively small projects. It makes more sense for me to just use C++.

Additionally, I take extensive advantage of scope based deletion in my code.

I find Linus's rant to be much more emotional than factual. I would agree with him that STL and Boost can be inefficient crap, and that's too bad, but I usually have bigger fish to fry than optimizing my container classes, and if I need to optimize around them I can do it.

I also agree with him that a lot of s**thead programmers write bad C++, and that's worse than bad C.



realitysucks
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 30 Aug 2012
Age: 52
Gender: Male
Posts: 43
Location: (New) Rotterdam

01 Sep 2012, 8:00 pm

I think for extremely gifted programmers C is probably a good choice. You have to be an ace at pointers (which can be daunting even for experienced programmers) and grapple with things like variable length strings. Take a look at the rich string library in a language like .net or PHP. You could spend weeks developing that functionality in C, and bugs are another story.

It also depends on what you are doing. If you are creating a website, C is probably a horrible choice. If you can isolate the 1% of your code that is causing bottlenecks - rewrite it in C and call it from another language. Then again if you are creating a game or operating system, I think C would make a great choice!



2fefd8
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 25 Jul 2012
Age: 36
Gender: Male
Posts: 44

02 Sep 2012, 12:25 am

Yes, C++ is an ugly language. It's not the concept (C with classes) that is bad but the execution. The C++ standard is a huge bloated mess with many redundant features; also, often the default behavior is the opposite of what one would want and expect. The type system is also badly designed and sometimes behaves in ways one would not expect without being acquainted with the many strange details of how C++ actually works. It's not that you can't learn these corner cases but that the language shouldn't have pointless corner cases that have little or no benefit. As a result, to write decent C++, you have to expend more effort writing your code in a uniform and consistent way than in many other languages.

Of course, there's also the issue that the C++ standard is so complicated that no compiler is completely standards conformant. Most of them don't even implement the export keyword which has been in the standard for a long time now (but is hard to implement for various reasons).



peterd
Veteran
Veteran

User avatar

Joined: 25 Dec 2006
Age: 71
Gender: Male
Posts: 1,347

02 Sep 2012, 12:53 am

Let me recommend the iPad app Cargo Bot - it'll pose you simple programming problems and let you solve them, just as you could in Basic.

One reason the software problem's got worse over the last few decades, apart from its endless fads and enthusiasms, is that we provide services on widely varied devices these days. IDE complexity has increased to try and make that increased complexity manageable.

If Cargo Bot is too simple, try the eXist XML environment and its IDE Exide. You can make real information systems with it with the lowest possible complexity, once you've mastered XQuery.



Trencher93
Velociraptor
Velociraptor

User avatar

Joined: 23 Jun 2008
Age: 124
Gender: Male
Posts: 464

02 Sep 2012, 10:45 am

BASIC causes brain damage. I think an entire generation of the computer industry was ruined by having BASIC included on PCs as the default programming language.

C++ -is- brain damage. It's what happens when the ivory tower has complete freedom to create the perfect language. The result is incomprehensible. I was looking at some C++ 2011 new features recently. They're mostly ugly workaround for situations where previous C++ standards painted themselves into corners. Anyhow, if you ever get a chance, get the original edition of The C++ Programming language. I have a copy, and it's amazing how there was a good idea in all the mess.



ruveyn
Veteran
Veteran

User avatar

Joined: 21 Sep 2008
Age: 87
Gender: Male
Posts: 31,502
Location: New Jersey

02 Sep 2012, 10:46 am

Back in the late 80s and 90s the big dispute was procedural programming versus object oriented programming.

ruveyn



marshall
Veteran
Veteran

User avatar

Joined: 14 Apr 2007
Gender: Male
Posts: 10,752
Location: Turkey

02 Sep 2012, 12:34 pm

ruveyn wrote:
Back in the late 80s and 90s the big dispute was procedural programming versus object oriented programming.

ruveyn


I don't think the two are opposed or mutually exclusive. Self-contained algorithms that perform a specific mathematical task on a chunk of data are best described conceptually in procedural terms. Full blown software applications are best described in terms of objects and classes. But objects contain pieces of procedural code, and procedures can manipulate the objects they have access to. IMO OO programming is simply an extension of procedural programming. Objects structure and organize a program while procedures do any heavy lifting deep within.



MyFutureSelfnMe
Veteran
Veteran

User avatar

Joined: 26 Feb 2010
Age: 44
Gender: Male
Posts: 1,385

02 Sep 2012, 1:32 pm

marshall wrote:
ruveyn wrote:
Back in the late 80s and 90s the big dispute was procedural programming versus object oriented programming.

ruveyn


I don't think the two are opposed or mutually exclusive. Self-contained algorithms that perform a specific mathematical task on a chunk of data are best described conceptually in procedural terms. Full blown software applications are best described in terms of objects and classes. But objects contain pieces of procedural code, and procedures can manipulate the objects they have access to. IMO OO programming is simply an extension of procedural programming. Objects structure and organize a program while procedures do any heavy lifting deep within.


Well said.



MyFutureSelfnMe
Veteran
Veteran

User avatar

Joined: 26 Feb 2010
Age: 44
Gender: Male
Posts: 1,385

02 Sep 2012, 1:32 pm

Trencher93 wrote:
BASIC causes brain damage. I think an entire generation of the computer industry was ruined by having BASIC included on PCs as the default programming language.

C++ -is- brain damage. It's what happens when the ivory tower has complete freedom to create the perfect language. The result is incomprehensible. I was looking at some C++ 2011 new features recently. They're mostly ugly workaround for situations where previous C++ standards painted themselves into corners. Anyhow, if you ever get a chance, get the original edition of The C++ Programming language. I have a copy, and it's amazing how there was a good idea in all the mess.


Man, have you seen Objective C? C++ is really not as bad as it can get.



Robdemanc
Veteran
Veteran

User avatar

Joined: 30 May 2010
Age: 47
Gender: Male
Posts: 2,872
Location: England

02 Sep 2012, 2:14 pm

Once I get to know them I love all IDE's and bug fixing is great. I think the OOP approach is a huge improvement over the procedural approach and now I just learnt services and love them too.