Board index » cppbuilder » Re: BC Studio?

Re: BC Studio?


2004-05-22 03:05:18 AM
cppbuilder114
Hendrik Schober wrote:
2. you don't want to give tasks that
Quote
might provoke AVs anyway.

The task doesn't have to provoke an AV. Just imagine using scanf in an
assignment. printf for that matter too. C/C++ are inherently dangerous.
.a
 
 

Re:Re: BC Studio?

Alex Bakaev [TeamB] wrote:
Quote
The task doesn't have to provoke an AV. Just imagine using scanf in an
assignment. printf for that matter too.
Yup. Those two functions are unbound and it's possible to smash your stack
with them, with all related problems of such an 'accident'. Any halfbaked C
programmer knows this, and every halfbaked C++ programmer uses streams.
Quote
C/C++ are inherently dangerous.
Since you seem to single out C and C++, I'd say you're totally and utterly
misrepresenting the fact of the matter. In my humble opinion, stating that
C and/or C++ are inherently dangerous shows the dismal grasp you seem to
have of those languages. You obviously are unable to separate what
constitutes the language, the runtime library and the dangers associated
with an uninformed programmer. And as a matter of fact, I say that C and/or
C++ are just as dangerous as any other programming language, Delphi, Java,
Cobol or whatever .Net language included.
--
Ruurd
 

Re:Re: BC Studio?

R.F. Pels wrote:
Quote

Since you seem to single out C and C++, I'd say you're totally and utterly
misrepresenting the fact of the matter. In my humble opinion, stating that
I thank you for giving me your opinion. I will treasure and hold it dear.
Quote
C and/or C++ are inherently dangerous shows the dismal grasp you seem to
have of those languages. You obviously are unable to separate what
Fortunately, we have eager people like yourself to disabuse the likes of
me of all wrong notions we might have.
Have a good day, Sir.
.a
 

{smallsort}

Re:Re: BC Studio?

Quote
C/C++ are inherently dangerous.
I guess you must be afraid to ride a bicycle, drive a car or ride in
an airplane. Look how dangerous they are. <g>
You live C/C++ Alex. Hyperbole really doesn't always look good on
you.
. Ed
Quote
Alex Bakaev wrote in message
news:40ae52ec$ XXXX@XXXXX.COM ...

The task doesn't have to provoke an AV. Just imagine
using scanf in an assignment. printf for that matter too.
C/C++ are inherently dangerous.
 

Re:Re: BC Studio?

Quote
...and every halfbaked C++ programmer uses streams...
Speak for yourself.
I am a halfbaked C++ programmer and I resent the irregular and
non-intuitive syntax for controlling C++ streams as well as their
massive size and processing overhead. I commonly use C style streams
because they are easy and reliable.
. Ed
Quote
R.F. Pels wrote in message
news: XXXX@XXXXX.COM ...
 

Re:Re: BC Studio?

"Daniel Bissett" < XXXX@XXXXX.COM >wrote in message
...
Quote
Using IDE based products such as BCB and VC to study C++ porgramming is
redicules. While it can be done, there are too many issues that
distract, divert or overwhem the student.
If it were true then every {*word*249}ager should have taken a course in driving a
bicycle before learning how to drive a car. The solution to complexity of
modern software tools is good instruction, professional guidance, not
dumbing down the tool. In reality it's often the students who resent the
instructors being overely archaic in their approach to teaching programming
languages. At least that was the case during my years at the university.
Having a nice IDE, with friendly de{*word*81}, instant help, easy searches,
hints, etc. makes learning the language more fun and more efficient than
dealing with primitive text editors and command-line compilers and equally
clumsy command-line de{*word*81}s. The students having more frustration with
those command-line tools than with the language itself. If I were learning
the language with those tools I would have never chosen this profession.
g
 

Re:Re: BC Studio?

Good point!
The challenge today is to teach programming and how to be a productive
programmer at the same time!
Saulo
Quote
If I were learning
the language with those tools I would have never chosen this profession.
 

Re:Re: BC Studio?

On Sat, 22 May 2004 02:49:15 -0700, "George" <George@localhost>wrote:
Quote
"Daniel Bissett" < XXXX@XXXXX.COM >wrote in message
news:40acfeeb$ XXXX@XXXXX.COM ...
...
>Using IDE based products such as BCB and VC to study C++ porgramming is
>redicules. While it can be done, there are too many issues that
>distract, divert or overwhem the student.

If it were true then every {*word*249}ager should have taken a course in driving a
bicycle before learning how to drive a car. The solution to complexity of
modern software tools is good instruction, professional guidance, not
dumbing down the tool. In reality it's often the students who resent the
instructors being overely archaic in their approach to teaching programming
languages. At least that was the case during my years at the university.
Having a nice IDE, with friendly de{*word*81}, instant help, easy searches,
hints, etc. makes learning the language more fun and more efficient than
dealing with primitive text editors and command-line compilers and equally
clumsy command-line de{*word*81}s. The students having more frustration with
those command-line tools than with the language itself. If I were learning
the language with those tools I would have never chosen this profession.

g
Sometimes I wonder if I would have chosen this profession if my first
exposure to programming was a modern IDE.
It may make leaning the language more fun for some, but I wonder how
much time is spent learning the language and how much is spent
learning the IDE. Learning an IDE is not a bad thing, but time spent
doing it means less time learning the language. I stongly agree that
good instruction is much more important than the tools, but I think
part of good instruction is providing appropriate tools.
In my own university experience with math software, students were
asked to use fairly complicated software that they had not been given
sufficient time to learn. So instead of learning about math or even
how to effectively use math software, students spent most of their
limited time trying to "get the right answer". I attribute this to
trying to teach everything at once.
Would you expect a beginning woodworker to walk into an automated
furniture production factory to learn how to make a table? Even with
professional guidance, it would probably be a bit overwhelming. The
relevance of the "archaic" methods of table construction depends on
who you ask. Some might say, "this is how the average table is made
now so teaching anything else is a waste of time". Others would say,
"let's start by making a simple table". More than likely professional
instruction would involve choosing the right tools and presenting
those instead of turning the student loose in a professional
woodworker's shop.
I see nothing wrong with starting out in a constrained environment and
gradually using more sophisticated tools, or for that matter starting
out with one language and moving to another. I'm a proponent of
anything that gives a starting programmer perspective.
Chris Hill
XXXX@XXXXX.COM
 

Re:Re: BC Studio?

Alex Bakaev [TeamB] < XXXX@XXXXX.COM >wrote:
Quote
Hendrik Schober wrote:
2. you don't want to give tasks that
>might provoke AVs anyway.
>
The task doesn't have to provoke an AV. Just imagine using scanf in an
assignment. printf for that matter too. [...]
But this _is_ "a task that might provoke an
AV" -- at least by my definition. Which is
why I didn't give it to C++ students.
The first thing they ever did which had them
make mistakes that lead to AVs was a string
class (where 'new'/'delete' did always proof
to be perilous). And this always was way in
the course.
In fact, I only briefly talked about C input
and ouput at all -- mainly so they understand
it and generally knew about its traps. There
never was an exercise for it, and no question
in the tests. There's only so much you can
teach in a given amount of time, and I always
preferred teaching them the C++ part of the
std lib.
FWIW, this is an outline of my course schedule
(which assumes the students had some exposure
to programming -- even if in a totally different
language):
0. History/Context
1. Basics:
- "Hello, World!"
- programm organisation, source files,
headers
- functions, types, operators
- (std lib) strings, simple input (cin)
- if/switch/loops etc.
- (std lib) vector/list/indices/iterators,
sorting and other simple algorithms
2. Simple UDT
- class/struct
3. Exception basics
- try/throw/catch
4. Low-level features/Dynamic memory
- pointers/arrays/indices, pointer
arithmetics
- dynamic memory:
. new/delete
. new[]/delete[]
. RAII
- unions
5. UDTs: Inheritance/Polymorphy
- single inheritance, polymorphy (virtual
functions)
- multiple inheritance
6. Type casting
8. Improving UDTs
- operator overloading
- free vs. member functions
- ADL (aka Koenig lookup)
- function objects
- overloading new/delete
9. Exception hierarchies
10. Generic programming
- templates: generic functions/types
- non-type template arguments
- traits, policies
11. RTTI
- typeid, type_info
- more on dynamic_cast
12. A standard library overview
- more on strings
- streams
- STL: containers, algorithms, iterators
13. Brief look at advanced template stuff
- template meta-programming
- generative programming
Quote
.a
Schobi
--
XXXX@XXXXX.COM is never read
I'm Schobi at suespammers dot org
"Sometimes compilers are so much more reasonable than people."
Scott Meyers
 

Re:Re: BC Studio?

Not bad; maybe even aggressive :-).
 

Re:Re: BC Studio?

George <George@localhost>wrote:
Quote
"Daniel Bissett" < XXXX@XXXXX.COM >wrote in message
news:40acfeeb$ XXXX@XXXXX.COM ...
...
>Using IDE based products such as BCB and VC to study C++ porgramming is
>redicules. While it can be done, there are too many issues that
>distract, divert or overwhem the student.

If it were true then every {*word*249}ager should have taken a course in driving a
bicycle before learning how to drive a car.
I think your example doesn't compare well.
(Why would they need to learn how to use
a machine that sells complicated airplane
tickets when all they need is ask the bus
driver to sell them a ticket?)
Quote
The solution to complexity of
modern software tools is good instruction, professional guidance, not
dumbing down the tool. In reality it's often the students who resent the
instructors being overely archaic in their approach to teaching programming
languages. At least that was the case during my years at the university.
Having a nice IDE, with friendly de{*word*81}, instant help, easy searches,
hints, etc. makes learning the language more fun and more efficient than
dealing with primitive text editors and command-line compilers and equally
clumsy command-line de{*word*81}s. The students having more frustration with
those command-line tools than with the language itself. If I were learning
the language with those tools I would have never chosen this profession.
I see your point. However, I have a few others
to make:
For one, students learn programming, languages,
and using available tools. These are three
distinct things. They will have a hard time
learning all three of them at once.
Further, no one here called for primitive text
editors. Editors with syntax highlighting and
the ability to integrate compilers are rather
easy to find. Rather than that, the question
was, whether, when struggling to learn C++,
you should have to deal with wizards that ask
you whether you want to create a VCL project,
a Win32 project, a Win32 console project, an
MFC project, an an extended storage procedure
Dll, an ATL project and whatever else there is
that you never heard about -- where, when you
hit F1 on the keyword 'bool' you get hits for
"BOOL" (Win API), "Bool" (.NET), "bool keyword"
(C#), "bool keyword" (C++), "bool operator"
(OLE DB Templates) and more of these _plus_ 2
dozen hits for "boolean" (and we are talking
novices here, that forget what a boolean is
named in this semester's language) -- where
you have dozens toolbars and menus full with
hundreds of commands, icons, and ideas 78%
of which do not apply to what you do -- where
it is easier to apply your favourite keyboard
shortcut "Project/Implement Interface", than
compiling an "Hello, World!"-app as the IDE
won't compile a source file unless it's part
of some project...
Finally, I strongly believe that, to learn
the language, you don't need a de{*word*81}.
Students struggle with the syntax first. As
I explained elsewhere in this (sub) thread,
the tasks given to them should reflect that.
I have taught C++ and IME the first time
they run into an AV is when they use dynamic
memory, forget about the "rule of three",
and thus mess up the memory manager. But
these bugs are really hard to find even for
seasoned programmers (as the symptons will
not necessarily show immediately when you
process the erronous statement) and therefor
it is much more imported that the teacher is
around and explains that they should always
think of this rule.
Quote
g
Schobi
--
XXXX@XXXXX.COM is never read
I'm Schobi at suespammers dot org
"Sometimes compilers are so much more reasonable than people."
Scott Meyers
 

Re:Re: BC Studio?

"Hendrik Schober" < XXXX@XXXXX.COM >writes:
[snip]
Quote
Finally, I strongly believe that, to learn
the language, you don't need a de{*word*81}.
Seconded. It's even worse: people get accustomed to the
edit-compile-run-crash-debug cycle. "First the compiler catches some
of my mistakes, then I'll use the de{*word*81} for the rest". This mindset
is terrible. I've observed that on production evironments, the quality
of the software is inversely related to how often de{*word*81}s are
used. On some high quality teams, the mere fact of starting a debug
session is an implicit acknowledgment that some fundamental principle
is not working or is not being observed by the developers.
--
Oscar
 

Re:Re: BC Studio?

Ed Mulroy [TeamB] wrote:
Quote
>C/C++ are inherently dangerous.


I guess you must be afraid to ride a bicycle, drive a car or ride in
an airplane. Look how dangerous they are. <g>

You live C/C++ Alex. Hyperbole really doesn't always look good on
you.

Ed, it would help if people assuming things about me didn't forget the
context of this thread - learning C/C++.
.a
 

Re:Re: BC Studio?

Quote
Ed, it would help if people assuming things about
me didn't forget the context of this thread -
learning C/C++.
Good point and reinforcement for why those for whom the context of
this thread applies should be comfortable with the proper use of
simple and stable functions such as printf and sscanf.
. Ed
Quote
Alex Bakaev wrote in message
news:40b25219$ XXXX@XXXXX.COM ...
 

Re:Re: BC Studio?

Agree. Printf always has been extremely difficult to get it to work
right. Compare to it the streams are piece of cake. It was a great day
when I switched from plain C to C++ and started using the streams. It
was about 14 years ago, but I still remember it :-) .
Chris Uzdavinis (TeamB) wrote:
Quote
While C++ iostreams also require looking up their formatting
statements, at least on the plus side, they are completely type-safe,
and if you mess anything up the compiler will detect it.

That's a very important feature, especially for people new to the
language who don't easily spot mistakes in their code.