Re: About programing, a general question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/14/2010 12:45 PM, les wrote:
> On Fri, 2010-12-17 at 09:50 -0700, Patrick Kobly wrote:
>> A first programming language should avoid concepts like:
>>        * Pointers (at least in the C conception of them, breaking the
>>          typing system)
>> <SNIP>
> I see a lot of complaints about pointers in all these messages, telling
> this novice to avoid them.  But the fact is that all languages rely on
> pointers.  Even the beloved scripting languages so many tout, cannot
> exist without pointers.
Of course this is true.

<snip>
> The beloved object oriented folks have pointers built in, that are used
> to access the procedures that affect the objects.  The objects are in
> fact structures, which are created in blocks and again pointers are used
> to reference that information.  When you use an array, that is an
> indexed offset from a pointer.
As is this.
> Someone said pointers break the typing.  That is not true, if you do not
> break pointer typing to begin with.  That is a pointer can be typed, and
> moreover someone who uses an integer for a pointer is voiding type
> control in his program.
And moreover, somebody who uses the standard libraries in C needs to 
void type control in his program in this manner.  A learning programmer 
with entry level skills does not have the knowledge to understand when 
this is appropriate and when it is not (and is potentially dangerous).
> No knowing pointers means not having any clue to how the underlying
> structure works and leads to weak programming.
And trying to understand the concepts of indirection at a point when one 
does not have a grip on concepts such as boolean logic, flow control and 
variable assignment / use causes a muddied understanding of pointers, 
what they are and how they work.  This muddied thinking at this critical 
conceptual jump is extremely difficult to remedy with students.
> I strongly encourage every beginning programmer to learn pointers,
> pointer usage and pointer math to understand some of the mechanisms that
> make programs break.
I strongly encourage beginning programmers to learn boolean logic, flow 
control, procedure and function calls, variable assignment / reference, 
and the distinction between formal and actual parameters.  And then I 
strongly encourage them to extend this knowledge by understanding 
pointer indirection and recursion.

> A programmer who doesn't understand the strengths
> and weaknesses of pointers is like a plumber who doesn't know how pipes
> work and what makes a manifold.
And the plumber presumably learns how to work with individual pipes 
before he learns how to work with a manifold.  Surely a learning plumber 
does not get thrown into new construction work on a sky-rise without 
supervision to start.
> He can hack around, but he cannot
> diagnose when plumbing makes noises, doesn't flow correctly or even
> backflows.
>
> That is my opinion.  Maybe I am out to lunch, but has anyone seen any
> language that didn't access memory?
Most assuredly not.  But learning with languages that assist in 
developing a conceptual model for programming and then extend to a 
fuller model appeals to brand new programmers.

PK
-- 
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux