Image Map Image Map
Page 1 of 10 12345 ... LastLast
Results 1 to 10 of 99

Thread: Decided to start learnig C

  1. #1
    Join Date
    Apr 2010
    Location
    Albany, OR USA
    Posts
    1,009
    Blog Entries
    1

    Default Decided to start learnig C

    I've played around with BASIC since about 1979 but never really got super deep into it. A few years ago, I bought a book about assembly, but couldn't stay awake reading it. So, late in September, I started looking for Online Courses for programming. I stumbled accross "C Programming with Linux" from Dartmouth College. I'm now three courses into a seven course program and learning a LOT! Has anyone here checked this out or completed all seven courses? I'd love to hear feedback and suggestions as to were to go after completion. C++? Python? Java? Other C courses?

    If you click the picture, you'll see my progress so far.

    Capture.jpg

  2. #2

    Default

    Good luck and have fun with learning C! I have started several times but I am so used to Pascal that every time there is a need for programming something, I have to fall back to Pascal again because I'm not familiar enough with C.
    But there is also a bit of annoyance: Borland C is not GCC C is not Microsoft C etc. etc. Broland Pascal is Free Pascal and that is good enough for me.
    With kind regards / met vriendelijke groet, Ruud Baltissen

    www.baltissen.org

  3. #3

    Default

    Hi, ibmapc. I'm glad you are learning (and I wish enjoying) learning C. As Ruud said, GCC has many differences with Borland or Microsoft C for DOS, although the basics are the same because Borland C is ANSI compliant (although old standard), but it has many incompatible extensions aimed for DOS programming.

    So where to go next depends on your programming target: if you wish to do DOS applications, the basics will be the same you learnt for Linux (file handilng, text printing, logical operations, types, structures and such are part of the ANSI standard since decades ago) but you would need to learn some DOS specific functions, some of them slightly different depending on the compiler you choose, such as Microsoft, Turbo/Borland or Open Wattcom.

    So if you want to expand your C knowledge applying it to DOS programming (if that appeals to you), I would read something as Herbert Schidt books on Turbo C, for example. Also must be there some tutorials over the Internet but I can't tell as I don't know them.

    If, on the other side, you want to learn to program modern 32/64 bit console or Windows applications, or even web applications, with a language very close to C/C++, but easier to implement and code than Visual C++ on this platform, I would suggest learning C# with the help of the .Net Framework.

    Of course Python, Java and Pascal are excellent too but I'm not as familiarized on them as I'm on C, that's the reason I did not talk about them before.

  4. #4
    Join Date
    Jan 2005
    Location
    Principality of Xeon W-2140B the Great State of Central New Jerky
    Posts
    2,422

    Default

    I learned C, am still learning C, using texts like C How to Program. I want to say there are better ones. But I've read 2 different editions over the years. It's just the one I stuck with.

    There doesn't seem to be many if any good texts on advanced C topics. One I also like is an O'Reilly book, with a sea horse on the cover IIRC, 'Algorithms in C' or something like that. Actually deals with issues like encrypting data and such.

    Online courses can be good I suppose. But you need to work that knowledge. Otherwise you'll just forget a lot of it. Trust me.

    Another book I used to have was Crafting C Tools for the IBM PC. Not sure if that was ansi based, M$ based, or wot. That's the world we live in. You have to be able to use more then one variant.

    A knowledge of C is not optional and the knowing will serve you well. It's the basis for so many other languages besides - Java, Javascript, PHP, etc. C++ of course. You don't have to limit yourself to C. But as I've already said it's really a foundational skill in computer science.

  5. #5
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    35,690
    Blog Entries
    18

    Default

    K&R C is the original document from which most of the old guys became acquainted with the language. I've linked to a somewhat later online edition that might serve better to get your feet wet; for differences from the first edition, see Appendix C at the end.

    In many respects, it's quite different from C99 and light years away from C++. Like all computer languages, it seems, it was a very simple language; but it's grown like Topsy in the intervening years. Consider original 1954 FORTRAN and compare it with, say, F90. C is much like that, particularly when considered in the light of C++.

    I don't know if any of the old Usenet C forum content presided over by Ritchie is still around, but I found it to be interesting reading back in the day.
    Last edited by Chuck(G); November 7th, 2020 at 09:03 AM.

  6. #6
    Join Date
    Sep 2008
    Location
    SE MI
    Posts
    5,177
    Blog Entries
    6

    Default

    Quote Originally Posted by ibmapc View Post
    I've played around with BASIC since about 1979 but never really got super deep into it. A few years ago, I bought a book about assembly, but couldn't stay awake reading it. So, late in September, I started looking for Online Courses for programming. I stumbled accross "C Programming with Linux" from Dartmouth College. I'm now three courses into a seven course program and learning a LOT! Has anyone here checked this out or completed all seven courses? I'd love to hear feedback and suggestions as to were to go after completion. C++? Python? Java? Other C courses?

    If you click the picture, you'll see my progress so far.

    Capture.jpg
    Last year I bought a C++ book from Amazon and it came from Walmart. It was supposed to have the CD/DVD with it but I never received it. Still going round and round with Amazon and I don't think I'm going to win.
    Surely not everyone was Kung-fu fighting

  7. #7
    Join Date
    Feb 2006
    Location
    Jacksonville, Florida
    Posts
    1,336

    Default

    On what machine are you targeting your programs for?
    If it's for an early vintage computer, then stay with C. However, early K&R compilers didn't have very good debuggers. You really need a good debugger to find and correct errors in your source code. Otherwise you're level of frustration will be high.
    I would recommend C++. K&R C had problems with pointers and other areas that were addressed in C++.

    There are several free C++ compilers that run on modern machines. Couple that with the enormous tutorials on YouTube, your experience will be more rewarding. and less frustrating.

    For older P.C. compatables, Turbo C++ works fine. Not as many YouTube tutorials though.

    As far as Assembly language goes. Heathkit made the ET3400 and ET1000 computers that had self teaching courses. Assembly will give you knowledge on what happens at the "primitive" level of programming. Great for interfacing with circuitry.
    IT is very tedious to learn. Just keep in mind if you want to learn interfacing with hardware, assembly language is the way to go.

  8. #8

    Default

    Quote Originally Posted by ibmapc View Post
    I'd love to hear feedback and suggestions as to were to go after completion. C++? Python? Java? Other C courses?
    Learn some data structures, for sure. Linked lists, trees, maps. Those will take you far, in any language. With C you'll know them at a primitive level.

    You should go write a bunch of C programs next, that's what you should do.

    I can't speak to the classes, but you can't learn C, or any language really, in 7 classes.

    You need to apply the language to things that interest you and get things done, and it's best done without a safety net.

    You need to go and write a bunch of stuff that maybe in the end you're not happy with so that you can improve later. It software, you can change it.

    Simply, it takes practice, a lot of practice, to learn these environments and be productive with them.

    I also suggest to anyone learning a language, that while learning, you type in all of your code. Don't cut and paste it from the web, type it in. If practical, don't download it from the web, but type it in. Your brain processes it much differently character by character than just drag and dropping large blocks of code that you know nothing about.

    Typing it in lets you asses what you're typing. Determine "Oh I see what they're doing here" vs "WTH is going on here?". You also have a better chance when you're in some section of "I don't know" to have it make sense later when the rest of the code is in place. When the "Aha" hits.

    There is a LOT of code in the world and on the internet, but there's still a lot of room to find your own voice, write your own code, make your own mistakes, and fix them. There's a bunch of alternatives out there, don't chase them. Best to work with C and find its warts and problems and such as they apply to you before you go run out trying to find solutions because of what someone else says.

    I'm of the opinion that an expert in anything is not someone who knows something, it's someone who knows how to fix something. There's a zillion books on how to tile your bathroom, and almost none of them really help you when your floor isn't level, the wall is out of plumb, or something doesn't set right. To fix things, you have to break things, and to break things, you need to make things. So, go make some stuff, break it, fix it, and make it again.

    It's always good to learn other languages, but it's better to be fluent in one before venturing out. Only then will you be able to better appreciate the new language, and, perhaps, the old one as well.

  9. #9

    Default

    I use C for any project where I really need performance (except on 8-bit machines where I just write it in assembly), or on systems where I can't count on any runtime being there other than the standard C library, which is everywhere.

    But its string handling sucks, so I tend to use Perl for everything else (except on 8-bit machines where BASIC suffices).
    I use my C128 because I am an ornery, stubborn, retro grouch. -- Bob Masse
    Various projects and oddities: http://oldvcr.blogspot.com/
    Machine room: http://www.floodgap.com/etc/machines.html

  10. #10
    Join Date
    Sep 2008
    Location
    SE MI
    Posts
    5,177
    Blog Entries
    6

    Default

    Quote Originally Posted by Chuckster_in_Jax View Post
    On what machine are you targeting your programs for?
    If it's for an early vintage computer, then stay with C. However, early K&R compilers didn't have very good debuggers. You really need a good debugger to find and correct errors in your source code. Otherwise you're level of frustration will be high.
    I would recommend C++. K&R C had problems with pointers and other areas that were addressed in C++.

    There are several free C++ compilers that run on modern machines. Couple that with the enormous tutorials on YouTube, your experience will be more rewarding. and less frustrating.

    For older P.C. compatables, Turbo C++ works fine. Not as many YouTube tutorials though.

    As far as Assembly language goes. Heathkit made the ET3400 and ET1000 computers that had self teaching courses. Assembly will give you knowledge on what happens at the "primitive" level of programming. Great for interfacing with circuitry.
    IT is very tedious to learn. Just keep in mind if you want to learn interfacing with hardware, assembly language is the way to go.
    For me proly something that runs at least XP? Never gave it much thought. I'm fair with BASIC/Visual BASIC but haven't used those in a while. The last time I did anything productive was before I retired back in '07. I wrote and compiled a program that would figure dB losses and gains with various tower based fixed positioned RF transceivers/duplexers with respect to antenna type, radiation pattern, elevation, and local area topography.
    Surely not everyone was Kung-fu fighting

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •