Max

Re: Recommeded C++ dev environment ?

Mon May 21, 2012 3:18 pm

rurwin wrote:I got all the way through university without ever writing a program that consisted of more than one source file.
Had some teachers who believed in OO programming to the extreme instead.
As in tons of classes, most of which do not do anything useful, but only represent a model and have get and set methods.
Each class in a separate file, adding up quickly.
So did use Makefiles, but don't think we ever had complicated dependencies.

You learn to be more pragmatic and productive after university.

User avatar
johnbeetem
Posts: 945
Joined: Mon Oct 17, 2011 11:18 pm
Location: The Mountains
Contact: Website

Re: Recommeded C++ dev environment ?

Mon May 21, 2012 5:50 pm

rurwin wrote:I got all the way through university without ever writing a program that consisted of more than one source file.
I think I know what you mean, but I have worked professionally with source files over 12K lines each. They were written by other people, of course. I would have imagined those six boxes of punched cards.

I got into modular construction very early, mainly caused by slow card readers and the limitations of rubber/elastic bands. After a few hundred lines the decks became unwieldy and easier to drop, and reading them in was more likely to exceed the mean time between card reader jams :-)

User avatar
Morgaine
Posts: 141
Joined: Mon Mar 12, 2012 1:13 am

Re: Recommeded C++ dev environment ?

Mon May 21, 2012 6:32 pm

Just in case someone got the wrong impression, I want to state again very clearly that what I wrote is not intended as a general critique of IDE usage and does not apply to industrial use at all. It was focused on one very specific thing, the unhelpful impact that full-featured IDEs have on the quality of learning in programming education ONLY, as a result of being typically obscure and not transparent in what they do. They create an artificial picture of what is occurring, instead of laying bare all processes, inputs and outputs, and making the processing phases explicit. This does not help students apply a known foundation and build a solid pyramid of knowledge upon it.

Outside of programming education, in the areas of vocational training, enthusiast-level project use, and industrial/commercial programming, IDEs can of course be extremely useful and effective. Indeed, depending on the project, I use them myself, both in commercial work where I use whatever the team uses, and also personally -- for example when an IDE provides good quality debugging for embedded targets. But this use doesn't have the purpose of programming education, because I did that a long time ago.

I hope I'm being clear. :)

Morgaine.
Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

spurious
Posts: 343
Joined: Mon Nov 21, 2011 9:29 pm

Re: Recommeded C++ dev environment ?

Mon May 21, 2012 6:41 pm

In answer to the original question...
CodeLite runs on the R-Pi.
It's a little sluggish to launch, but doesn't seem too bad once you're in, not that I've done a lot with it yet.
Geany is installed on the Debian image already, but it just doesn't feel like an IDE, more like a text editor
But if you want a wizzy fast environment I would stick with command line interface and use vi.

woodinblack
Posts: 39
Joined: Mon Mar 19, 2012 12:05 am

Re: Recommeded C++ dev environment ?

Mon May 21, 2012 11:41 pm

Morgaine wrote:
woodinblack wrote:It teaches you absolutely nothing about programming, but a lot about configuration and tools, which you may or may not have to do again.
And using an even bigger and more esoteric tool, the IDE, doesn't do this? Your implied assertion simply doesn't make sense.
My assertion only makes sense if you believe that an IDE is more esoteric than a make file, and in my experience, it simply doesn't.

Most IDEs make more sense than a makefile as they don't have pseudo rules based setups.
Morgaine wrote: The IDE hides pretty much everything concerned with the tools that really do the job, and worse, it adds a whole pile of IDE configuration knowledge to assimilate that is totally useless to know except within the IDE in question. Knowledge of the individual tools that the IDE invokes is applicable to all IDEs or to development without any IDE, and it acquaints the student with the kinds of problems that appear in each phase. With development under IDEs, it's truly a case of "and magic happens now", and the user is more trained than educated.
Again, will have to completely disagree with that assessment, but I think that is because I am more interested from an education point of view in people learning about what is going on within the processor or within the machine, logic, algorithms, control flows. Make files don't teach you that (any more than IDE setups do), they just get in your way. Programming itself teaches you that. Both make files and IDEs are covering flaws in the machine that we need a variety of strange tools that vary from machine to machine to produce the code that actually does the work but an IDE will get you to that point quicker.

In your later post (and its late so I am not finding it now!), you ask do you want drivers or engineers. Make files don't teach you either part, they teach you mechanics. If you want a load of mechanics thats fine, we need people to keep the old stuff we have running, but we are going to be a bit lost when we want to create new cars, and that is where we need engineers.





I'm not disputing that IDEs are useful for personal productivity. I'm just disputing that their impact on education is a good one. From what I've seen, they result in the creation of less capable software engineers (poor for education) who deliver systems that won't even build unless you happen to be running their particular IDE (poor for portable open source projects).

Morgaine.[/quote]

User avatar
Morgaine
Posts: 141
Joined: Mon Mar 12, 2012 1:13 am

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 2:28 am

woodinblack: Your formatting seems to have got a bit messed up, making it look like you agree with me, when you don't. Unfortunately, with the current very disempowering forum block on retrospective edits past 30 mins, you won't be able to correct it.

My goal however is on creating engineers, because that is what I did professionally in academia. And no tool that hides what is actually happening will ever deliver during education a competent engineer who knows what she is doing, period. It cannot, by definition of "hide".

Morgaine.
Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

User avatar
ReadiesCards
Posts: 40
Joined: Sun May 13, 2012 5:22 am

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 5:13 am

spurious wrote:In answer to the original question...
CodeLite runs on the R-Pi.
It's a little sluggish to launch, but doesn't seem too bad once you're in, not that I've done a lot with it yet.
Geany is installed on the Debian image already, but it just doesn't feel like an IDE, more like a text editor
But if you want a wizzy fast environment I would stick with command line interface and use vi.

Hey spurious, thanks for this!
Paul - the original questioner

mccp
Posts: 26
Joined: Thu Dec 01, 2011 8:53 am
Contact: Website

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 8:26 am

johnbeetem wrote:(Make)... terminology is IMO hard to grok.
That is my point. If you already know how to do it, then Makefiles should be simple. Learning to do it from GNU manuals or other resources available online is the complete opposite of simple - at least it was hard for me.
Morgaine wrote:I hope I'm being clear.
Clear, eloquent and well considered, IMO :) .

I'm all for learning how to do anything from first principles - especially stuff like debugging. I'm just interested in debating how a learner can progress from first principles to a more modular and managed project.

My preference these days (as an embedded software developer) is to use a project defined with Makefiles but developed with Eclipse, so I get all of the good IDE stuff like code indexing etc., in a nice GUI (ok, nice is probably a subjective term here). Defining the project with Makefiles allows it to be built on a variety of platforms and I can put all sorts of extra stuff in there easily, like building documentation.

mccp
Posts: 26
Joined: Thu Dec 01, 2011 8:53 am
Contact: Website

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 8:43 am

And responding to the OP:

I recently came across SciTE (http://www.scintilla.org/SciTE.html) which is a very nice looking editor, with some basic tools that should allow for building makefile-based projects. Problem is, there isn't an ARM build of it (yet).

It looks like it should be lightweight enough to work well on RasPi and maybe has enough functionality to qualify as a very lightweight IDE.

andybastable
Posts: 8
Joined: Thu May 17, 2012 12:16 pm

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 10:09 am

I guess this IDE/makefiles argument boils down to who you are hoping to educate about programming. I see the Raspberry Pi through the eyes of my 8-year-old-self - and forcing me to understand the pure weirdness of makefiles back then may well have stopped me persevering with coding.

Aside from what IDEs do to compile the code -- the fact is that they are (normally) pretty user-friendly editors with keyword colouring, code navigation helpers etc. Why you would want to remove all user-friendliness from a child's first experience of coding is frankly beyond me.

But then, we aren't going to start teaching children to code c++, I hope!

User avatar
MBeentjes
Posts: 10
Joined: Sun May 20, 2012 5:33 pm
Location: The Netherlands

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 2:07 pm

I have went to some teachers on my school and talked about the RPi as an end project for my comprehensive. They seems to be excited, telling me that it's a great idea. But I still have to think of a good research that will be understandable for an average human.

I am thinking of starting to create an physics engine + speed testing.
"Life is simple, you make choices and don't look back."

tufty
Posts: 1456
Joined: Sun Sep 11, 2011 2:32 pm

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 3:01 pm

From a purely platform-independence point of view, I'd suggest using a text editor of some description (there's lots of them out there, I'm not going to wander into the flamewar territory that is suggesting an *actual* text editor[1]), probably from the command line. And rather than messing about with Makefiles, I'd probably look into using autotools.

IDEs are great and all, but they have a massive code footprint, and they generally make projects that will only build in that particular IDE. autotools is a pain to set up, and has a "bit" of a steep learning curve, but it makes for painlessly platform independent code.

Simon

[1] although obviously, emacs > vi

User avatar
Morgaine
Posts: 141
Joined: Mon Mar 12, 2012 1:13 am

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 5:50 pm

tufty wrote:[1] although obviously, emacs > vi
<spills coffee> :D
Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

User avatar
rurwin
Forum Moderator
Forum Moderator
Posts: 4258
Joined: Mon Jan 09, 2012 3:16 pm
Contact: Website

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 8:23 pm

My first C project was built with ed. (see man ed.) But at uni we built our PDP-11 assembler programs with a similar editor which could not go backwards in a file. That concentrates the mind wonderfully. :-D

pygmy_giant
Posts: 1562
Joined: Sun Mar 04, 2012 12:49 am

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 10:30 pm

I find IDEs confusing, not labour saving.
Ostendo ignarus addo scientia.

woodinblack
Posts: 39
Joined: Mon Mar 19, 2012 12:05 am

Re: Recommeded C++ dev environment ?

Tue May 22, 2012 10:55 pm

Morgaine wrote:woodinblack: Your formatting seems to have got a bit messed up
It did a bit - I think I missed a bit at the bottom as it was really late and I was tired.
Morgaine wrote:My goal however is on creating engineers, because that is what I did professionally in academia. And no tool that hides what is actually happening will ever deliver during education a competent engineer who knows what she is doing, period. It cannot, by definition of "hide".
Ignoring that that statement literally can't be accurate (unless you are talking about throwing away computers / calculators etc) and assuming the spirit of what you mean, I totally agree with you, and always did.

Where I appear to disagree is in your belief that a makefile in some way hides less than an IDE. Which in my experience it doesn't. A makefile (again in my experience) just adds a layer of complexity to an already complex process.

And that is from the point of view of doing both, for quite a long time on many different systems.
However, strangely enough, in education, I never met a makefile.

User avatar
johnbeetem
Posts: 945
Joined: Mon Oct 17, 2011 11:18 pm
Location: The Mountains
Contact: Website

Re: Recommeded C++ dev environment ?

Wed May 23, 2012 12:33 am

rurwin wrote:My first C project was built with ed. (see man ed.) But at uni we built our PDP-11 assembler programs with a similar editor which could not go backwards in a file. That concentrates the mind wonderfully. :-D
I've experienced both. I really like "ed". Four "man" pages (last time I looked, several decades ago) describe everything, including two pages for regular expressions. Minimalist prompt. Very efficient to use on a 10 CPS teletype. People still use "ed" notations all the time, specifically "s/this/that/", sometimes with the "g" suffix. I occasionally use "ed", and still use "sed" a lot.

I cannot remember the name of the editor I used with the "going backwards is for people who fail to plan ahead" feature. Quelle horreur. Actually, you could go backwards on the current "page", but you had to rewind to the beginning of the file if you wanted to go to an earlier page. Obviously designed for use with mag tape.

TECO! TECO was great fun. As they say, TECO commands are indistinguishable from serial line noise. Just for fun, type in your name and try to guess what happened.

User avatar
rurwin
Forum Moderator
Forum Moderator
Posts: 4258
Joined: Mon Jan 09, 2012 3:16 pm
Contact: Website

Re: Recommeded C++ dev environment ?

Wed May 23, 2012 6:36 am

woodinblack wrote:A makefile (again in my experience) just adds a layer of complexity to an already complex process.
It certainly can do so. Especially the ones created automatically, and simply adding another file with a different syntax adds complexity. But if you find the need for it and you are hand-coding it, it doesn't need to be difficult to understand.
woodinblack wrote:However, strangely enough, in education, I never met a makefile.
I'm not surprised; in education programs are generally so small and self-contained that "gcc -o program program.c" suffices, even though the equivalent Makefile is shorter ("program: program.c"). But if that line gets burdensome, then is the time to drag in Make, not a command file.

antiloquax
Posts: 406
Joined: Sun Nov 20, 2011 11:37 am
Contact: Website

Re: Recommeded C++ dev environment ?

Wed May 23, 2012 7:21 am

I am a beginner at C, but I favour using VIM. I've been reading "Learn C the Hard Way" and the GNU C Tutorial.

Buckmeister69
Posts: 2
Joined: Wed May 23, 2012 1:29 pm

Re: Recommeded C++ dev environment ?

Wed May 23, 2012 1:36 pm

I too agree and disagree. I studied computing at school (the first city technology college sponsored by business and conservative government) but walked away to join a job I love. I have played with (and building) pc's ever since. The iPhone sparked one thing inside and I enrolled in apples developer program. I fumbled around with Xcode and limited knowledge (from school some 20 yrs ago) to produce to iPhone apps. I realised I couldn't carry on fumbling and enrolled in a distance learning course for computer science (using java). It is now like a haze has been lifted and I understand what the IDE does for you saving time and effort.

I think a good IDE will encourage the bedroom programmer to jump in and have a bash. They will probably be able to produce and end product.

But having a foundation will mean they understand how and why.

Both a win win situation as more people having a bash = increased popularity = more coverage, investment, tools, jobs, games, choice the list goes on.

User avatar
ArborealSeer
Posts: 300
Joined: Tue Jan 24, 2012 9:48 am
Location: South West, UK

Re: Recommeded C++ dev environment ?

Wed May 23, 2012 2:10 pm

Max wrote:
rurwin wrote:I got all the way through university without ever writing a program that consisted of more than one source file.
Had some teachers who believed in OO programming to the extreme instead.
As in tons of classes, most of which do not do anything useful, but only represent a model and have get and set methods.
Each class in a separate file, adding up quickly.
So did use Makefiles, but don't think we ever had complicated dependencies.

You learn to be more pragmatic and productive after university.
i still try to stick to that model genenally, but most often, drop back to C rather than try to be clever, classes help, but really, a good struct or 3 can sort you out! (btw this does not include certain front-end frameworks, as they can be a massive life/time saver)

we used to have an engineer here (only 2 have left in the 15_ years i've been here) who would define huge levels of complexity like that with header after header full of #define's and enums that were never ever used.
Pi Status > Farnell, Arrived 24/5- RS, Arrived 1/6

RedToasty
Posts: 2
Joined: Thu May 24, 2012 4:15 pm

Re: Recommeded C++ dev environment ?

Thu May 24, 2012 4:33 pm

Learning to code is massively overwhelming, which I personally think is why it's in decline, IDE's skip the technicalities and drops you straight in the code. Where you go from this is up to you, if you have a fantastic grasp of physics you can be applying this passion very quickly, if you love graphical coding you'll be going a couple of tutorials later, if you want to delve deeper and look into how the program is compiled, so be it.

I think focusing on letting people get into their comfort zone as quickly as possible will give them the confidence to improve a lot faster. There's no reason why you can't back track and see how it works afterwards, much like the car metaphor, I'd rather hop in and turn the key to get started, than have to understand the engine before being allowed to get to the fun part.

User avatar
Morgaine
Posts: 141
Joined: Mon Mar 12, 2012 1:13 am

Re: Recommeded C++ dev environment ?

Thu May 24, 2012 9:05 pm

RedToasty, I wonder if you realize that it's precisely the great ease with which one can start programming that has led to the Software Crisis in the first place.

It's so easy to write a toy program, and then it's so easy to extend it a bit, and it continues to be easy to add features and make it more capable ... and before you know it, you've created a non-trivial software system using the skills and methods which you learned for writing toy programs. And then the "software bridges" begin collapsing all over the world, literally millions of crashes a day, and people are mystified why this is so.

Unfortunately, while it's easy to diagnose the disease, Computer Science doesn't currently have an effective cure for it, despite having tried several possible solutions over the past few decades. The lack of a cure doesn't mean that we can wash our hands of known contributing factors though, and the aspect that you consider good about programming is actually one of those contributing factors. Computing is an area in which a little knowledge is quite a dangerous thing if it ever gets applied to a non-trivial project that has social impact.

This puts us in quite a difficult spot, because we want to increase computer literacy in the population but we don't want all those software bridges collapsing. It's a tough problem, and although it's possible to backtrack as you stated and fix deficiencies and unlearn bad habits, I think the jury is out on whether this gets us to where we want to be. If the end goal is to attain the highest level of quality in software engineers or computer scientists, then this easy road may be the wrong one to follow.


Morgaine.
Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

RedToasty
Posts: 2
Joined: Thu May 24, 2012 4:15 pm

Re: Recommeded C++ dev environment ?

Fri May 25, 2012 10:18 am

I guess it completely depends on the target audience then. Like a lot of the people who will be posting here, I picked up programming when very young, through magazine printouts and the like. Very open and inviting intro, had the first goal posts been learning the workings of a compiler I doubt I'd have given it much time.

Working in the games industry for over 10 years now, the vast amount of very passionate programmers picked it up in a similar fashion. If anything I feel there are too many options now, I'd like the old copy + paste + experiment coding of old to come back a bit, and I'm hoping the Pi gathers enough community to support this.

Different software crises for different industries by the sound of it, no burning bridges here, strong knowledge of the internal workings required by everyone. Once someone is studying Computer Science they've already shown the interest, it's the people who never study computer science due to being intimidated by the first steps I'd like to fix.

annodomini2
Posts: 33
Joined: Sun Feb 05, 2012 12:00 am

Re: Recommeded C++ dev environment ?

Fri May 25, 2012 1:44 pm

My opinion is, for the first few exercises, they shouldn't even be using make.

And having to manually construct the program using the linker in the command line.

What they need is:

1. Basic text editor (no code highlighting)
2. Compiler.
3. Assembler.
4. Linker.

They learn how the various elements of the process work, yes it's tedious and frustrating, but when you have a massive project that you're trying to build and can't understand why it won't link correctly, you have the knowledge and foresight of where to look.

It's not the answer to everything, but it covers the basics.

IDE's are beneficial for commercial development, but as Morgaine states, when you're learning, you need to understand the basics.

You are trying to teach someone how something works, not how to use something.

As stated previously, drivers/mechanics/engineers scenario.

Return to “C/C++”