Drafting a new article - What would you like to see?

I'm planning on giving the article section some love (Last post was 2016). I am going to write a small "From scratch" series where I plan to take novice programmers beyond limited examples and learn programming from the ground up. The article will be split into chapters where I will try and cover a few programming bases and continue to build up a few programs and tools to help write tools to help write programs to help write tools etc etc. Everything that will be written will have a use (No "Hello, world" examples that are never used in real life). The learning curve will start off smooth (I hope) but eventually you will start writing programs using a number of languages other than C++, use and install libraries outside of the standard, using graphics (I can only do C++/SFML) and I hope to continue the series to embedded devices such as Microcontrollers, Raspberry Pi's or even OS Dev if it's wanted.

I'm wondering what people would like to see in this Article other than:

- Programming methodology / How to think
- Programming fundamentals (Data types, conditionals, flow of control)
- Version Control (Scripts, CMake, GitHub and SVN's, file/folder hierachy)
- Mathematics (Basic, Array/2D, Matrices/3D)
- Networking (Overview, packets, transmission protocols)
- Cryptography (Ciphers, Encryption, Common encryption algorithms
- Shared Libraries (Make your own DLL's/LIB's)
- Emulation (State machines, how to read hardware specifications and programming manuals, emulate transistor project (Hfe, Gain, voltage/Current curves etc))
- Embedded Systems (Microcontrollers, FPGA's, programming cables, fuse-bits)
- OS Dev (Bootloader, Real vs Protected Mode, Kernel, FAT16, Drivers, ISR's and IRQ's, system intercommunication)
- Hacking (Maybe: Network hacking or Router attacks will not be covered. I would be willing to go over decompilers and debuggers, memory watching, nopping, offline exploits etc)
- Game Dev (C++/SFML, Game loops, Writing a 2D engine)

Note - Listed in no particular order.

It's going to be a huge artical, probably the longest thing I'll ever write. I will also be looking for seasoned veterans to catch any bugs or find better streamlined approaches to problems, and I will be looking for proof readers to find any spelling or grammatic errors. I really want this article to be my Mona Lisa and my way of giving back.

Any feedback is welcome, if there's anything you would like to see be covered drop a comment below. Be warned, I am no professional programmer myself. I am doing this for people who might learn like me through solid, practical examples that have purpose with just enough theory for it to make sense.


Final words:

- This is going to be a long time coming, don't expect anything soon. I am currently making a draft revision how the chapters and modules will be laid out.

- Once the article is out, depending on how well it's received, there could be more to come. I would like to continue helping education in the Computer Science area.
Start with a small article. For instance, 'Shared Libraries (Make your own DLL's/LIB's)'.
Thanks for the feedback JLB,

Do you mean to cut it up into smaller articles? I didn't plan on writing how-to's or tutorials, the internet is awash with them. I wanted to attempt teaching through writing an application, and doing things when the time arises. I would have taught the basics of shared libraries when incorporating our framework to help with the development of the application. Making a library to handle an XML format for storing data for instance. The library would of course be designed to be reuseable in other projects, as a shared library should be. It could also be used to teach the development of API's. I wouldn't like to teach it as a step by step guide, but more of an incorporation for understaning the bigger picture.

My first vision of this project was similar to a game character progression, where one would start off with just primitives, conditionals and the iostream header and go from there. As you go through the chapters and learn different things we would "level up" so to speak, gain access to new headers, learn about new objects in the STL and see how we can use and combine these objects to our benefit. An std::vector of std::strings is a useful combination, it could represent a text file or a list of names or URL's. I'd really like to encourage this way of thinking.

I could do smaller tutorial guides going over specific topics, such as shared libraries or how to read and write from a file. Though I do wish I'm able to give it the same kind of passion. I usually find tutorials tedious, not out of a boring read but by nature.

Anyway thanks for your input as always.
> I didn't plan on writing how-to's or tutorials, the internet is awash with them.
> I wanted to attempt teaching through writing an application, and doing things when the time arises.

I'm sorry, I didn't read your original post carefully, and was under the impression that you wanted to write a series of articles. Please disregard my suggestion; it was irrelevant.

My only suggestions would be to introduce std::vector, std::string and struct early, and cover the basics of input/output. If you can fit it in, an introduction to using the regular expressions library would have long term benefit.
My only suggestions would be to introduce std::vector, std::string and struct early, and cover the basics of input/output.


I am happy to say this was exactly my plan. The early stage of the first program will be using char* instead of std::string out of completeness. Though these will be replaced with the standard almost immediately after when the <string> header is introduced. The header files will come in stages, hopefully allowing for a more natural learning curve. I figured the beginning would be the perfect time to add and use char* and then sweep it under the carpet in favour of std::string.

If you can fit it in, an introduction to using the regular expressions library would have long term benefit.


A benefit to me too, I've never done regex before. I'd want myself to be fully proficient at it before I write about it though. It takes me quite a bit of experience to start using what I learn in real use cases and have it be second nature.
I figured the beginning would be the perfect time to add and use char* and then sweep it under the carpet in favour of std::string

Why? You don't learn to drive a car by learning how to hone the bores first. All textbooks on the Definitive Guide list introduce vectors and strings long before pointers of any kind.
Hey Cubbi,

Why?


Out of completeness. Regardless of other texts it is a primitive type. Only 2 char*'s are used in the initial program (Username, password, If and ==). I was not teaching char* as a pointer, only to show it exists, it can hold a sentence and it can be equals qualified just as an int or float.

I have my own section on teaching pointers and memory addressing. I was going to start off with teaching std::string, don't get me wrong. I just didn't want to get to OS Development before teaching what a char* was, as that would be one of the few ways I could logically fit it in, with purpose and use, other than some C-Style library that still require character pointers in method parameters.

Of course I could be heavily misguided, what is your suggestion? To leave char* till I get to pointers?

EDIT: Fixed a code tag and typo's

EDIT2: I also wanted to show char* early on due to program arguments as well (int argc, char** argv) I will be covering program also very early on, around the same time as vectors.
Last edited on
closed account (E0p9LyTq)
Maybe an article giving an overview the changes C++14/C++17 makes to writing code.

Possibly an article about using <random> vs. C library srand()/rand().
Thanks for the feedback Furry,

C++14 and 17 is something I have considered though I feel I am not up for that task, I am not up to date with the standard myself unfortunately.

Nice suggestion with the <random> header, it is something I can definitely make an object of and put in the library. My article will not be about a specific topic, more of a hack and slash guide to doing everything. It will be rather big to say the least.





Since it is targeted to novice programmers, it would be better if this series of articles is written as if there is only one C++: C++ as it exists today, as supported by the mainstream compilers.
it would be better if this series of articles is written as if there is only one C++: C++ as it exists today, as supported by the mainstream compilers.


That's C++17 or bust then right?

I agree I wouldn't like to confuse any readers with the different versions, using the latest version seems more than agreeable (Even if I don't know anything about it to be truthful). I'll need to do some some reading and learning myself.

I still need to use features in C++11, never used a constexpr in my life. Only just started to use lambda's somewhat regularly as a means to pass a function to thread parameter, it really does beat the long way. :-)

Since it is targeted to novice programmers


It's also aimed at green beginners too, those who've never wrote a line of code. My prime motive isn't to teach C++, or even the ins and outs of programming. More of how to think like an inventor, engineer, programmer. How to turn your imagination into reality, you know? Kids are very imaginative, I don't want to bog them down in language details. Same for young teens, they've got a brain I don't want to have to make this book all colourful with pop-out pictures. I'd just like to make a happy medium to show anybody they could make something in C++, today. You might not know the language inside out, you might not know how the compiler works, but they will know it only takes 25 lines of code and 1 external library to send a message through the internet halfway across the world.

I also aim for this book to help people stuck in the console get out of the console, or to at least start installing and using other libraries to keep things fresh and interesting. I was stuck in the console more years then I'd like to admit, getting out of that helped me improve 100 fold.
> That's C++17 or bust then right?

No. No compiler vendor has fully implemented C++17 as yet (most of C++17 is in the library, clams of full C++17 conformance are spurious).

I think C++14 would do quite nicely for now.


> I still need to use features in C++11, never used a constexpr in my life.
> Only just started to use lambda's

Ideally, do not create a contrived example just so that a language/library feature could be demonstrated. Let the flow be natural (for you); it's fine if you do not cover all that is there in C++.
Hello everyone,
from the number of my postings you can find out how far I got in learning C++.
From this very genuine novice, you get this feeling that OOP is strange. All my life I solved my problems in a very procedural way. When I dropped out of schhool, there was trig. Now I have no idea what calculus is.
What is needed ( what I need ) is some programming methodology. Writing a program ( solving a problem ) using OOP.
@JLB

I think C++14 would do quite nicely for now.


That's perfect, I misjudged you're comment when you said "as C++ exists today" I thought you were refering to C++17. To be honest I've been wanting to dig into that <filesystem> header for a while but been afraid to try any 17 stuff yet.

Ideally, do not create a contrived example just so that a language/library feature could be demonstrated. Let the flow be natural (for you); it's fine if you do not cover all that is there in C++.


Exactly what I'm going for. I don't want to do anything I am uncomfortable explaining. The programs written will all be from my currently existing knowledge, unless someone tells me a better(cleaner) solution using easy to follow methods that reflects the current standard. Like you have often do with things like perfect forwarding and correct use of templates. More than happy to credit usernames of course. I'd want heavy feedback on these things, I don't want my article to enforce bad technique.


@mycurser

Hey there,


From this very genuine novice, you get this feeling that OOP is strange. All my life I solved my problems in a very procedural way. When I dropped out of schhool, there was trig. Now I have no idea what calculus is.


I appreciate your feedback. I'm sorry to say though curser, I dropped out of my maths class too. :-(

My articles won't cover mathematics indepth. Only what is essential for most programming tasks. Things would include standard calculations, some algebra and equations, offsets, bitwise stuff like that. There are plenty of good mathematics resources on the web if you want to learn, and learning physics equations and writing them down in code gave me some fun times.

What is needed ( what I need ) is some programming methodology. Writing a program ( solving a problem ) using OOP.


Now this is something I will be doing a lot in my article. I plan not to teach you the ups and downs of C++, but how to create things with it and try and break down creative barriers beginners such as myself faced when starting out. We will be using a lot of OOP, modeling things and creating thin and heavy wrappers of standard objects and external libraries to create advanced objects, such as creating an object to act as a file, or creating a Router class for a server to dispatch packets to the correct recipients using the SFML TCP socket library.


Topic archived. No new replies allowed.