Deutsch   English   Français   Italiano  
<86r0a8zscy.fsf@linuxsc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups: comp.lang.c
Subject: Re: Top 10 most common hard skills listed on resumes...
Date: Wed, 28 Aug 2024 06:31:25 -0700
Organization: A noiseless patient Spider
Lines: 56
Message-ID: <86r0a8zscy.fsf@linuxsc.com>
References: <vab101$3er$1@reader1.panix.com> <vad7ns$1g27b$1@raubtier-asyl.eternal-september.org> <vad8lr$1fv5u$1@dont-email.me> <vaf7f0$k51$2@reader1.panix.com> <vafgb2$1to4v$2@dont-email.me> <vafkdk$1ut4h$2@raubtier-asyl.eternal-september.org> <20240825192810.0000672c@yahoo.com> <vafs6u$21ofd$1@raubtier-asyl.eternal-september.org> <20240825220016.00002793@yahoo.com> <86bk1e4y7t.fsf@linuxsc.com> <20240827124443.0000483a@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Wed, 28 Aug 2024 15:31:28 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="6b5ad5f5888a1a6f98ce057847c0415f";
	logging-data="3676216"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/6K1KdfzQ8+OtUcASpILmcCVDqrA05aOE="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:H8AgvjsE1nYs3tOdxPdSVsufmUU=
	sha1:nac4KMlvW48fmG2JyBJi1rbXDsU=
Bytes: 4028

Michael S <already5chosen@yahoo.com> writes:

> On Mon, 26 Aug 2024 17:16:06 -0700
> Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>
>> Michael S <already5chosen@yahoo.com> writes:
>>
>> [..concerning "abstraction"..]
>>
>>> Not that I am particularly fond of abstractions when I do see
>>> them.
>>
>> A most unexpected comment.  IMO choosing the right abstractions
>> to define may be the most important skill in developing large
>> systems.
>
> You are probably right, but me being me, I am rarely able to grasp
> pure abstract things.  Most typically, first read about abstract
> concept goes straight above my head.

Abstraction doesn't have to mean abstruse.  To some degree every
function written defines, or partially defines, an abstraction.
Consider printf() as an example - printf() provides a way of
sending formatted output without having to worry about the details
of how the formatting is done.  A key property of abstractions in
programming is offering a way to get something done without having
to worry about how it is done.  Sometimes what is being done is
fairly simple to explain and understand, and other times more
difficult, but both cases are abstractions.

>  It can't be helped by few examples, but success is not
> guaranteed.

Presumably you mean it can be helped, etc.  It's often true that
examples greatly help in explaining what an abstraction does.
However it is also often true that examples alone do not suffice.
To be useful an abstraction must be understood as to what it does.
More than that, an abstraction is not useful if the amount of effort
needed to understand and use it is greater than the amount of effort
required to do the same thing without making use of the supplied
functions, type definitions, etc.  In short, some documentation is
needed.  How much is needed varies a lot from case to case.

> Even after I seemingly grasped the principle, when I start using
> an instance of abstract thing, it's hard for me to stop thinking
> about gears and toothed wheels rotating under the hood.

Mostly this is a matter of practice and habit.  Of course there are
cases where it can be helpful to think about what is going on inside
an abstraction.  But such cases should be rare.  The primary purpose
of defining an abstraction is so one doesn't have to think about how
something is done, only what needs to be done.  I'm confident you
have enough discipline to acquire this habit if you make an effort
to do so.  After getting into the habit then you can start to think
about when to make exceptions.  But the first reaction should always
be "It's on a need not to know basis."