Click here to Skip to main content
12,396,230 members (56,775 online)

Welcome to the Lounge

   

For lazing about and discussing anything in a software developer's life that takes your fancy except programming questions.

Technical discussions are encouraged, but click here to ask your programming question.

The Lounge is rated PG. If you're about to post something you wouldn't want your kid sister to read then don't post it. No flame wars, no abusive conduct, no programming questions and please don't post ads.
 
AnswerRe: Are there reasons for beginner programmers to learn C ? Pin
wizardzz1-Mar-12 8:48
memberwizardzz1-Mar-12 8:48 
AnswerRe: Are there reasons for beginner programmers to learn C ? PinPopular
PIEBALDconsult1-Mar-12 8:50
memberPIEBALDconsult1-Mar-12 8:50 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
lewax001-Mar-12 8:52
memberlewax001-Mar-12 8:52 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
PIEBALDconsult1-Mar-12 9:35
memberPIEBALDconsult1-Mar-12 9:35 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Espen Harlinn1-Mar-12 9:55
mvpEspen Harlinn1-Mar-12 9:55 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
PIEBALDconsult1-Mar-12 11:00
memberPIEBALDconsult1-Mar-12 11:00 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Espen Harlinn1-Mar-12 11:05
mvpEspen Harlinn1-Mar-12 11:05 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw2-Mar-12 5:30
memberRussell Ranshaw2-Mar-12 5:30 
It's interesting that you mention "assembly".

The very history of C as a programming language speaks loudly.

Long ago and long ago (as the Native Americans would say), Bell Laboratories purchased a DEC PDP-7 computer. That machine was quite primitive, more or less a "minimal" computer. It had either 4k or 8k memory of 18 bit words, 16 op-codes, no multiply or divide instructions, no index registers, and primitive indirect addressing. It did have a set of memory locations that were "auto-increment" that simulated very primitive index registers, but were not terribly useful over all.

The principle I/O were paper tape and a model 33 teletype. In fact, a bare-bones PDP-7 only had a teletype, in which case it would have been a model 35 ASR, which had paper tape read and write included. VERY slow!

Bell Labs wrote a language called BPL (for Bell Programming Language, I think) which they used as an alternative to the assembly language supplied by DEC. I've never seen any details on BPL. However, Bell Labs used BPL to write a FORTRAN compiler for the PDP-7, as odd at that might sound.

When DEC came out with the PDP-11, Bell Labs bought one and jumped on it like a duck on a June bug! They wrote a translator that converted the BPL translator (probably other programs as well) to run on the PDP-11. Using the translated BPL, they developed a new language, C.

From rags to riches in terms of machine language capability, the C designers included features in the language to utilize many of the newly available features of the PDP-11. In particular, the auto-increment/decrement and to-memory instruction modifiers were incorporated in the ++/--/+=/-= operators. The indirection modifiers gave rise to the pointer operators.

The above information I learned from a Bell Labs programmer/developer at at DECUS (Digital Equipment Computer User's Society) meeting. He was one of the original creators of C, but unfortunately I forget his name.

He told me that when they developed C, they had in mind a "portable assembler" that would allow them to port code to any architecture by merely writing a translator for C for that new machine. Good C programmers, he said, visualized assembly code as they wrote in C.

For anyone interested, here is a link to the PDP-11 "card":


[^]

Given the .NET availability these days, it makes a lot of sense to do MOST programming in a .NET style language, as the languages/compilers are tailored for cross-platform operation.

For most of us, performance penalties are minimal in light of the super-fast multi-core processors we now enjoy. Only a few developers who are involved with projects in which the "utmost farthing" of performance is demanded need to be concerned about the very low-level workings of a given processor. In this case, the original C, with a suitable translation to the target precessor, makes some sense.

For beginners, I believe that Small Basic offers a good compromise, as it introduces the use of "objects" despite not being able to create new classes. Its absence of complexity lets one teach about the principals of programming without becoming embroiled with side-bar issues that have little to do with learning what programming is all about. Beginners quickly learn the fundamentals, then are ready to move on. My choice is then C#, as it is a new generation language and can be taught in "layers" after a few "rules" are learned, and new "rules" can be added as needed.

One of my "heroes" once wrote:

"A computer is like an old-testament god, many rules and no mercy."
- Joseph Campbell
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce3-Mar-12 6:15
memberSanmayce3-Mar-12 6:15 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw3-Mar-12 8:33
memberRussell Ranshaw3-Mar-12 8:33 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce3-Mar-12 8:50
memberSanmayce3-Mar-12 8:50 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw3-Mar-12 10:46
memberRussell Ranshaw3-Mar-12 10:46 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce5-Mar-12 4:18
memberSanmayce5-Mar-12 4:18 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw5-Mar-12 5:09
memberRussell Ranshaw5-Mar-12 5:09 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce5-Mar-12 6:03
memberSanmayce5-Mar-12 6:03 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw7-Mar-12 6:11
memberRussell Ranshaw7-Mar-12 6:11 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce8-Mar-12 8:36
memberSanmayce8-Mar-12 8:36 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw8-Mar-12 9:11
memberRussell Ranshaw8-Mar-12 9:11 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce9-Mar-12 7:54
memberSanmayce9-Mar-12 7:54 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw9-Mar-12 10:00
memberRussell Ranshaw9-Mar-12 10:00 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw12-Mar-12 11:10
memberRussell Ranshaw12-Mar-12 11:10 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce14-Mar-12 8:03
memberSanmayce14-Mar-12 8:03 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw16-Mar-12 2:18
memberRussell Ranshaw16-Mar-12 2:18 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Sanmayce16-Mar-12 9:05
memberSanmayce16-Mar-12 9:05 
GeneralRe: Are there reasons for beginner programmers to learn C ? Pin
Russell Ranshaw17-Mar-12 5:07
memberRussell Ranshaw17-Mar-12 5:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web02 | 2.8.160721.1 | Last Updated 24 Jul 2016
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid