[Swlug] C Programming Book Recommendations
Dave Cridland
dave at cridland.net
Thu Oct 24 14:26:22 UTC 2024
Hi Alan,
Neither Rust nor Go really need C to speed things up at all; Go has
structured concepts which are broadly similar in capability to OOP, Rust
has more traditional OOP as well, both are compiled (or "AOT") languages
with good optimisation. Both also have the kinds of "batteries included"
libraries in the standard environment, so there's little advantage in
setting out to make a Python/Go (for example) application from scratch.
C++ is no slower than C these days either, and rather surprisingly code
that looks shockingly complex in C++ compiles down as well as, if not
better than, C.
For better or worse - and broadly I think better - C has become a legacy
language, used only where the existing codebase already used C. And even
then, Rust (in particular) is sneaking in in some cases. I say this as
someone who spent the larger part of a decade coding exclusively in C - and
it's a handy skill when I have to hit OpenSSL's low levels yet again.
That's also not to say that Python isn't useful, with or without some
native code underneath - I write a lot of Python (even on my current
contract which is mostly a Go/C++ shop). It's broadly taken the place of
what we used to use Perl for a decade or two back. And of course,
JavaScript for web things - though I've used it for backend systems a lot
as well.
Dave.
On Thu, 24 Oct 2024 at 13:51, Alan Gray via Swlug <swlug at mailman.lug.org.uk>
wrote:
> Hello Dave,
>
> I am not sure Pascal ever had much of a market except education. It was
> taught to encourage good structuring after many had spent time with the
> early Basics The version we used was good internally, but pretty useless
> dealing with the outside world. I do not think C had any bearing on it's
> demise.
>
> Most languages exist because they are strong in a specific niche:
> JavaScript with html, Go in network systems, or Rust and C++ in a systems
> environment.
>
> The discussion so far recognises all the strengths and weaknesses of these
> languages, but hasn't considered their use in combination. In that
> situation 'C', rather than the extended versions, remains useful. I can
> certainly see, say, Python being used to handle a complex object oriented
> program with some modest routines in 'C' to speed things up. I am not sure
> how Rust and Go compare in this sort of environment. My best guess is that
> 'C' remains ahead.
>
> Regards
> Alan Gray
>
>
> On 23 October 2024 22:44:15 BST, Dave Cridland via Swlug <
> swlug at mailman.lug.org.uk> wrote:
>
>> The obvious "modern" replacement for C is Go, which was essentially
>> designed as a "C for bad programmers" - that's not really as bad as it
>> sounds, as you do need to be an astonishingly careful programmer to write C
>> that's both safe and good. Go has quite a lot more to it than C, but it is
>> at heart a Structured Programming language - the paradigm that most modern
>> C is written in - and its general "feel" is much the same.
>>
>> Rust is more of a replacement for C++, but it lacks so much of C++'s
>> power that it's really quite the tradeoff. There's finally the beginnings
>> of a serious movement to bring a lot of the core Rust concepts to C++ - if
>> this happens, then it'll be very good news for C++ (where you still can end
>> up with a null pointer dereference, or a buffer overrun, or a dangling
>> reference).
>>
>> Pascal died out really because of C; though as a teaching language,
>> Python has taken it over.
>>
>> JavaScript - and TypeScript ("JavaScript but it looks a bit like.NET") -
>> are pretty weird languages. It's generally best not to look too closely at
>> them, as they turn out to be a pile of weird behaviours and strange hacks
>> layered unevenly on each other.
>>
>> Dave.
>>
>> On Wed, 23 Oct 2024 at 20:15, Alan Gray via Swlug <
>> swlug at mailman.lug.org.uk> wrote:
>>
>>> Hello Huw
>>>
>>> Nicely said. I started on 6809 then 6502. Like you, it helped
>>> understanding pointers.
>>>
>>> Wasn't Erlang developed for use in telephone exchanges?
>>>
>>> Computer languages are tools. As always it is best to select the right
>>> tool for the job. Without knowing the job it's all speculation.
>>>
>>> As a first serious language I am reminded that years ago in college I
>>> was taught 'C' and Pascal. They had quite different characteristics and
>>> were considered complementary. Probably Python would replace Pascal, but I
>>> am not so sure about 'C'. Maybe Rust, but there are others that could be
>>> considered.
>>>
>>> Regards
>>> Alan Gray
>>>
>>>
>>> On 23 October 2024 18:52:53 BST, "Huw Ford (ConceptPC) via Swlug" <
>>> swlug at mailman.lug.org.uk> wrote:
>>>
>>>> Hi,
>>>>
>>>> I agree that C might not be the ideal 'first' serious programming
>>>> language, but after 40 years of programming, I’m still not entirely sure
>>>> which one would be.
>>>>
>>>> I started with assembler on the 6502 CPU, then moved on to the 68000.
>>>> From there, I learned K&R C (Kernighan and Ritchie). My background in
>>>> assembler, especially with memory addressing, helped me make sense of C’s
>>>> pointers. Later, I transitioned to ANSI C.
>>>>
>>>> After that came C++. Once I got my head around object-oriented
>>>> programming (OOP), I really fell in love with it.
>>>>
>>>> Eventually, I got into PHP and JavaScript, both of which are
>>>> syntactically similar to C in many ways.
>>>>
>>>> But the language that really expanded my thinking was Erlang. It was so
>>>> different from anything else I’d ever used. That said, I wouldn’t recommend
>>>> Erlang unless you had a specific use case for it.
>>>>
>>>> I’ve worked with people who recommend Java as a good first
>>>> language—it’s quite similar to C but without the headaches of manual memory
>>>> management. However, I haven’t had any first-hand experience with it myself.
>>>>
>>>> Hope this helps.
>>>>
>>>> Huw
>>>>
>>>>
>>>> On 23/10/2024 10:16, Neil Greenwood via Swlug wrote:
>>>>
>>>> On Wed, 23 Oct 2024, 10:04 Morgan Green via Swlug, <
>>>> swlug at mailman.lug.org.uk> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am very new to programming, but I want to start out on C to grasp
>>>>> the fundamentals of all programming languages. Can anyone recommend
>>>>> me any paperbooks on C programming that is suitable for complete beginners?
>>>>>
>>>>> Kind regards,
>>>>> Morgan Green
>>>>>
>>>>
>>>> Hi Morgan,
>>>>
>>>> I'm not sure C is the best language for a beginner. You have a lot of
>>>> extra work to do managing memory - my first C program (after I had 8 years
>>>> experience with 2-3 other languages) just segfaulted, and I never fixed it!
>>>>
>>>> If you are just starting out, my recommendation is to look at Python -
>>>> apart from the strict indentation requirement, it's much more friendly.
>>>> This will give you a good understanding of the fundamentals that are
>>>> present in most languages.
>>>>
>>>> If you want dead-tree books, Pragmatic Press make a good series of
>>>> introductory titles for both C and Python, as well as a wife range of other
>>>> languages.
>>>>
>>>> Hope this helps,
>>>> Neil
>>>>
>>>>>
>>>>> Sent from Outlook for Android <https://aka.ms/AAb9ysg>
>>>>> --
>>>>> Swlug mailing list
>>>>> Swlug at mailman.lug.org.uk
>>>>> https://mailman.lug.org.uk/mailman/listinfo/swlug
>>>>>
>>>>
>>>> --
>>> Swlug mailing list
>>> Swlug at mailman.lug.org.uk
>>> https://mailman.lug.org.uk/mailman/listinfo/swlug
>>>
>> --
> Swlug mailing list
> Swlug at mailman.lug.org.uk
> https://mailman.lug.org.uk/mailman/listinfo/swlug
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.lug.org.uk/pipermail/swlug/attachments/20241024/43965f88/attachment-0001.htm>
More information about the Swlug
mailing list