After I read Kernighan and Ritchie, I realized I knew nothing about C.
After I read Lippman, I realized I knew nothing about C++.
After I read Meyers, I realized I knew nothing about OO.
After I read Gamma, I realized I knew nothing about Patterns.
After I read Stroustrup, I realized I knew nothing about the STL.
Now that I'm reading Alexandrescu, I realize I know nothing about
Templates.
My exasperated question to you then, dear Usenet, is this:
....
Is it safe to start coding now? ;-)
That is to say, at what point can I feel brazen enough to battle this
Wes Craven-ish dread that the next book I pick up is going to very
politely, very eloquently, and very, very sensibly inform me that
everything I've been doing is wrong?
With tongue firmly in cheek,
(yet eyes firmly fixated on responses)
-Jeff 17 2194
Jeff_Ch wrote:
That is to say, at what point can I feel brazen enough to battle this
Wes Craven-ish dread that the next book I pick up is going to very
politely, very eloquently, and very, very sensibly inform me that
everything I've been doing is wrong?
If you read, and even if you completely understand, all good programming
books in the world, but have not programmed anything, you know nothing.
Start coding now, don't care if you don't use the most recommended, robust,
portable and reusable way in each and all cases or not.
--
Salu2
In article <11************ **********@i42g 2000cwa.googleg roups.com>, je*********@cox .net says...
After I read Kernighan and Ritchie, I realized I knew nothing about C.
[ mention of more fine books elided .... ]
Is it safe to start coding now? ;-)
Sure.
That is to say, at what point can I feel brazen enough to battle this
Wes Craven-ish dread that the next book I pick up is going to very
politely, very eloquently, and very, very sensibly inform me that
everything I've been doing is wrong?
If you treat "open to improvement" as meaning wrong, then you might as
well give up now -- programming is basically little more than a precise
expression of thoughts. Given the (huge) difference between how we have
to express our thoughts for the computer to understand, and the typical
way of expressing thoughts otherwise, there's still room for drastic
improvement. Given people's inventiveness in this area, I expect to see
that improvement to continue happening for a long time to come.
--
Later,
Jerry.
The universe is a figment of its own imagination.
Jeff_Ch wrote:
Is it safe to start coding now? ;-)
Nope. Read Refactoring, Refactoring to Patterns, and Test Driven
Development.
After you do, it's always safe to start coding.
One fallacy of reading all those other books is they can make you think that
all of OO and design means you must get the design right, the first time, or
you are screwed.
The truth is that OO has always meant you can change a design on the fly, as
you add features that need new design elements. All those old authors
followed practices very similar to refactoring, but they never bothered to
tell you how. (And many other authors actually tell you that only wise
programmers design up-front.)
That is to say, at what point can I feel brazen enough to battle this
Wes Craven-ish dread that the next book I pick up is going to very
politely, very eloquently, and very, very sensibly inform me that
everything I've been doing is wrong?
Why read the f---er otherwise??
--
Phlip http://www.greencheese.us/ZeekLand <-- NOT a blog!!!
Julián Albo wrote:
If you read, and even if you completely understand, all good programming
books in the world, but have not programmed anything, you know nothing.
Excellent advice! My apologies however, for I'm now scrolling up and
realizing I took way too many poetic liberties in my original post
(note to self: more sleep, less coffee).
I should have phrased my question much more succinctly as:
Given the considerable growth spurts over the last decade or so in
understanding the subtleties of this language, and given the (broad)
list of topics covered above, are there any other areas of current
exploration/research which come to mind that a 21st century coder would
feel he/she shouldn't be without? I'm mostly thinking along the lines
of what Boost/gnu might be toying with, but in the framework of the
current standard, specifically if there may be dangers lurking about
that stdlib0x would set out to tame.
Jerry Coffin wrote:
If you treat "open to improvement" as meaning wrong, then you might as
well give up now -- programming is basically little more than a precise
expression of thoughts. Given the (huge) difference between how we have
to express our thoughts for the computer to understand, and the typical
way of expressing thoughts otherwise, there's still room for drastic
improvement. Given people's inventiveness in this area, I expect to see
that improvement to continue happening for a long time to come.
Later,
Jerry.
Thanks Jerry ... indeed the inventiveness is what has me in such a
frenzy to gain some sort of confidence that I might be 'up to speed',
in some sense! I find it interesting tho, that it seems schools of
thought about C++ have changed dramatically over the years (to me at
least!) but not in response to a change in the language or an enhanced
capability, but in the way the fundamentals are viewed. Perhaps this
impression is simply my own personal biases getting in the way.
I suppose the tone I'm attempting to take here (given the sleep/coffee
caveat above), is along the lines of Scott Meyers' Forward in the 2nd
ed of Alexandrescu's book, where he describes a hesitation to include
templates in his own book, knowing full well that a revolution of
template understanding was on the horizon.
So I guess all I'm really asking is .... anyone notice any other
revolutions that might be hiding around the next corner?
Thanks again all,
-Jeff
Phlip wrote:
Jeff_Ch wrote:
Is it safe to start coding now? ;-)
Nope. Read Refactoring, Refactoring to Patterns, and Test Driven
Development.
Thanks Philip, duly noted. I had a sneaking suspicious that
Refactoring was going to pop up in this discussion.
After you do, it's always safe to start coding.
Ah yes, I see I made an utterly poor choice of words up there ...
really I just meant to use "start coding" as a metaphor for some sort
of wishy washy statement like "feel confident my programs are both
robust and resilient". Nevertheless, duly noted as well. :)
One fallacy of reading all those other books is they can make you think that
all of OO and design means you must get the design right, the first time, or
you are screwed.
Now you're directly addressing a concern of mine ....
The truth is that OO has always meant you can change a design on the fly, as
you add features that need new design elements. All those old authors
followed practices very similar to refactoring, but they never bothered to
tell you how. (And many other authors actually tell you that only wise
programmers design up-front.)
Okay this seems much more reasonable, and comforting in that it's much
closer to what I believed before. I've spent the last few years on a
project in ummm .... < ... lowers voice considerably ... something
seventyseven... .>. Now that I'm free again to quit thinking
procedurally, I did a quick topical review of what you good folks have
been up to. However, a Wikipedia search gives me the (I assume safe to
say) 'false' impression that if I don't understand why a particular
squiggly line on an OMT diagram is pointed up vs down on a RUP Use Case
thingy, then I might as well give up and find a job pulling cables.
Certainly these design patterns seem to have quite a bit of merit, I
would guess moreso in the apps industry than in M&S where I'm coming
from (although I do wonder if there's anything to gain by viewing the
scientific method through this view). But, more recent literature
cautions strongly against what I gather to be some basic tenents of
patterns, for one the overhead of run-time polymorphism (if I'm
interpreting all this correctly).
So needless to say, before I get to work on the next 50k sloc sim, I'm
pretty damn curious which idioms I can still reliably put my faith
into, and which may have fallen by the wayside.
That is to say, at what point can I feel brazen enough to battle this
Wes Craven-ish dread that the next book I pick up is going to very
politely, very eloquently, and very, very sensibly inform me that
everything I've been doing is wrong?
Why read the f---er otherwise??
Read??? You mean he's produced something other than Freddie?
Jeff_Ch wrote :
Given the considerable growth spurts over the last decade or so in
understanding the subtleties of this language, and given the (broad)
list of topics covered above, are there any other areas of current
exploration/research which come to mind that a 21st century coder would
feel he/she shouldn't be without?
Concurrent programming maybe.
In article <11************ **********@d34g 2000cwd.googleg roups.com>, je*********@cox .net says...
[ ... ]
So I guess all I'm really asking is .... anyone notice any other
revolutions that might be hiding around the next corner?
It's hard to say -- but only a question of timing, not whether there
will be revolutions.
For years I've maintained that programming is following much the same
route as database management did years before. We started with more or
less ad-hoc flat-file management of our data (functions, mostly). We
progressed to single-inheritance hierarchies, which are a whole lot like
hierarchical databases. The next step after that in database technology
was network databases, which are quite similar to multiple-inheritance
in programming.
With generic programming, we're working in the general direction of a
relational database -- instead of directly defining the relationships in
terms of inheritance, we can write something generically that simply
requires the right contents/capabilities in the type being manipulated.
Right now in C++, however, we're going a lot of that based on naming
conventions -- for example, the standard library contains quite a few
utility classes (e.g. std::unary_func tion) that do virtually nothing but
establish a set of names for specific items to more or less enforce
those naming conventions. We also have a fair amount of code that uses
(for example) less<Tinstead of operator<, because the former provides
us with a uniform name, whereas the latter doesn't really even have a
name when applied to some (e.g. built-in) types.
This leaves a lot of possible problems. One is that it's fairly
difficult to directly express the requirements of a particular template,
but easy to write code that can work to the extent of compiling, but
breaks all sorts of templates. Another is that it simply adds quite a
bit that needs to be learned, much of it oriented far more toward
memorization than any real understanding.
I'm not at all sure anything along that line will really be the next big
thing though. I think we've been moving in that general direction for
quite a while. Intentional Programming was intended (no pun intentional
or intended ;-) to provide something more or less along that line -- but
it doesn't seem to have taken the world by storm, or anything like that.
The same seems to be true of quite a bit of work with things like
explicit categories of iterators.
One big difference is that in C++ (or anything similar), nobody is very
willing to take a big performance hit just because something might fit a
cool new model. OO was around for a long time, but stayed decidedly on
the sidelines until people worked out ways of making it at least
reasaonbly competitive in terms of runtime speed and such. Even so, as
you've noted, modern C++ often makes heavy use of templates. Part of
this is the run-time cost of purely OO-based designs.
With that in mind, I think we're going to see a lot more work in the
general direction of the relational model, but probably not a wholesale
movement that ignores efficiency almost completely, like happened in
databases (even with advances in hardware, many SQL databases are still
roughly on a par with hierarchical databases running on '60s hardware).
--
Later,
Jerry.
The universe is a figment of its own imagination.
Jeff_Ch wrote:
After I read Kernighan and Ritchie, I realized I knew nothing about C.
After I read Lippman, I realized I knew nothing about C++.
After I read Meyers, I realized I knew nothing about OO.
After I read Gamma, I realized I knew nothing about Patterns.
After I read Stroustrup, I realized I knew nothing about the STL.
Now that I'm reading Alexandrescu, I realize I know nothing about
Templates.
For heavens sake, stop reading and start writing code! Without feedback
from real use, you'll never know what of all that is useful to you and
for what you are doing.
-- Bjarne Stroustrup; http://www.research.att.com/~bs
Jeff_Ch wrote:
<..snipped and reinstated below..>
bjarne wrote:
For heavens sake, stop reading and start writing code! Without feedback
from real use, you'll never know what of all that is useful to you and
for what you are doing.
-- Bjarne Stroustrup; http://www.research.att.com/~bs
Okay, as I sit here now with a silly grin across my face, I realize
just how much I botched my introduction. I suspect the Jersey sarcasm
doesn't translate well into print ;) Please allow me to start over...
Hey now folks, my name's Jeff. I've been a big fan of usenet since
deja days, but this is my first foray into posting. My background is
in physics and math, so I'm mostly programming from a mod and sim
point-of-view. As you can guess, C and Fortran comprised a major part
of my development, which for me has been the last 15 or so years.
Roughly 7-8 years ago I was working with Ada, and mildly poking around
in 'C w/ Classes', but really didn't start seriously considering
abstraction until '02ish. I've had the misfortune of spending the last
3 years buried firmly in f77, but now I can give C++ the majority of my
attention again.
[Here's the major clarifier I had blatantly disregarded above]
<wait for it...>
Having spent some quality time with books from these various authors
==over the years==, I can loosely couple the texts with the revelations
I experienced while reading them. With amateur poetic flare, they are:
After I read Kernighan and Ritchie, I realized I knew nothing about C.
After I read Lippman, I realized I knew nothing about C++.
After I read Meyers, I realized I knew nothing about OO.
After I read Stroustrup, I realized I knew nothing about the STL.
(now to be fair, the time difference between them should probably a
logplot... )
Having been tasked to a C++ project, I gleefully surveyed usenet and
the web to see what I've been missing (yay for Wikipedia!). The
overwhelming majority of it seemed to be modeling language related,
which I'm guessing is being required at most universities these days.
This was a major source of distraction for me, but underneath the
barrage of various flowchart definitions were these design patterns
that I still wasn't very familiar with, and they were obviously drawing
the attention of ppl interested in much more than classroom semantics.
After I read Gamma, I realized I knew nothing about Patterns.
So I went back to Gamma, had some fun with diagrams, coded up a few
ideas using them, and felt (or thought I felt) comfortable enough to
start blending these notions in with the project code. And here we
are:
Now that I'm reading Alexandrescu, I realize I know nothing about
Templates.
Now if you've stuck with this boring story so far, even after my
unintended initial misdirection, I do hope I can express my question
better, and that it might still have a chance of sparking interesting
discussion. ;-)
The discoveries that Templates have led to (and I'm conjecturing here,
please correct as seen fit!) provide a view of patterns that isn't
particularly congruent with the "textbook" approach taken around the
turn of the century. This is what I've been eagerly wrapping my brain
around most recently.
Now, had I gone ahead and barreled through implementing designs carte
blanche from GoF, at some point I'd imagine I would run into the
frustrations that Templates help overcome, and would end up reverse
engineering, (errr... 'refactoring' I suppose) a large portion of the
run-time polymorphism with the Template methods that I'm learning about
now.
This would have made Jeff very sad. Although probably all the wiser
for it.
Nevertheless, since it's on the customer's dime, I'm naturally led to
wonder,
==here it is, the real question!==
~~~~~~~~~~~~~~~ ~~~~
What other hidden gems have been discovered that I might want to
consider? Before pouring out many a class/object/template, are there
other items of interest not so easily found on Wikipedia that a
proactive programmer might was to at least assess first?
~~~~~~~~~~~~~~~ ~~~~
I keep looking in the direction of the Boost library, knowing that
standard, portable language features are brewing in there for a
not-too-distant release. I get the impression that understanding of
the non-trivial behavior in smart pointers is growing rapidly, so I'd
probably prefer to let them continue to incubate before attempting to
include them.
And now that I've thoroughly embarrassed myself (which is both fitting
and proper), I bid you fine folk a good night. :-) This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: beliavsky |
last post by:
If I run PyChecker on the following program, stored in xtry.py,
m = 10000000
k = 0
for i in xrange(m):
k = k + i
print k
x = range(3)
print x
|
by: Daniele |
last post by:
I have a 40 MB database in excel format.
I need to use it in Analysis Services, I imported the data by DTS (Data
Transformation Services), everything is working I can see the database,
but I can't load it in the analysis services.
I have to construct a cube but I can't see the database in any way I
tried.
Thank you
I hope my message is quite clear
Hope to find somebody that can answer me in Italian, but English is good
|
by: BruceGilpin |
last post by:
I was at a Microsoft sales presentation last week for the new version
of SQL Server, Yukon. They had an extensive presentation on SQL
Server and Reporting Services but didn't mention Analysis Services.
When I asked about the future of the product the MS Sales rep couldn't
give me any info. When I looked at the big product chart I got at the
presntation, Analysis Services wasn't on it. There was just box
refering to Reporting Services...
|
by: Derek |
last post by:
This isn't exactly a language question, but I'm curious if any
of the veteran programmers out there could recommend a static
analysis tool for C++. Specifically, I'm looking for something
that can flag unreachable code, possible security errors like
buffer overflows, and identify unused entities. It would also
be great if said tool could identify any headers included un-
necessarily, and perhaps compute some basic metrics. Are there...
|
by: wwalkerbout |
last post by:
Greetings,
Although, this relates to Analysis Services administration, I thought
I'd post it here in case someone with the administrative side of SQL
Server who subscribes to this Group may also know Analysis Services and
DSO as well.
I have a need to run Analysis Services on a single Server instance, but
obtaining its data from a SQL Server Cluster. I gather Analysis
Services is not designed to work within a SQL Cluster. However, the
| |
by: Ben |
last post by:
I have written a procedure which calls the CORREL function of Excel to
run correlation analysis on two arrays, then populate a table with the
resulting correlation coefficient. This process loops through several
records and recordsets. The procedure works well for awhile
(sometimes upwards of 10,000 times!), but then mysteriously begins
populating "0" as the correlation coefficient (even though I know this
to be inaccurate). Sometimes,...
|
by: Ray Tomes |
last post by:
Hi Folks
I am an old codger who has much experience with computers
in the distant past before all this object oriented stuff.
Also I have loads of software in such languages as FORTRAN
and BASIC, QBASIC etc that is very useful except that it
really doesn't like to run on modern operating systems and
has hopeless graphics resolution and lack of ease of use in
some ways.
|
by: exits funnel |
last post by:
Hello,
I apologize if this question is a bit vague and slightly off topic but I
couldn't find an Analysis Services and/or ODBO specific newsgroup. In
any event, I'm trying to address an issue in some code I've inherited
from a colleague who is on vacation and unfortunately, it deals with
ODBO, COM and Analysis Services, three topics with which I'm pretty
unfamiliar. Having said that here is the situation as best I can explain
it: the...
|
by: tavares |
last post by:
---------------------------------------------------------------------------------------------------------------------------------------------
(Apologies for cross-posting)
Symposium "Computational Methods in Image Analysis"
National Congress on Computational Mechanics (USNCCM IX)
San Francisco, CA, USA, July 22 - 26 2007
http://www.me.berkeley.edu/compmat/USACM/main.html
We would appreciate if you could distribute this information by...
|
by: tavares |
last post by:
-------------------------------------------------------------------------------------------------------------------------------------------
(Apologies for cross-posting)
Symposium "Computational Methods in Image Analysis"
National Congress on Computational Mechanics (USNCCM IX)
San Francisco, CA, USA, July 22 - 26 2007
http://www.me.berkeley.edu/compmat/USACM/main.html
We would appreciate if you could distribute this information by...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
| |
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |