Go Back   Computer Forums > General Computing > Programming
Click Here to Login
Join Computer forums Today


Reply
 
Thread Tools Search this Thread Display Modes
 
Old 09-26-2014, 08:49 PM   #1
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Programming frustration

Hello,

I am new to programming. I am also a career changer in my 40's looking to learn a new skill to get a better job.

I'm a logical thinker but understanding loops, functions, symbols, hash tags, and general coding is frustrating and complex. It s difficult to create a program from scratch and to learn coding.

Last year, I started out with C++ and became "ok" at it. But after a few months I gave up. I became too confused with the advanced stuff. I ended up memorizing the code to create games and copying and pasting someone else's work --and calling myself a programmer. Geez.
So I told myself --- "I need to understand and learn what I am coding so I can get a decent job (or freelance) and not BS my way through it."

I want to know exactly what each function is. What "char" means. What # is, etc. I want to be so well versed that I can teach someone a computer language.

The youtube tutorials for newbies are terrible. Many of those instructors assume we know programming.

I want to master coding. I need this stuff spoon fed to me in small amounts like I a 6th grader. I want to fully understand how to write clean code.

I think any programming language is difficult. I even tried learning "Scratch" the programming for kids to learn the basics. Epic fail.

Does anyone know any tutorials or awesome teachers for someone who knows ABSOLUTELY nothing about programming but wants to write an application, or a widget for a desktop or create a game?

Thanks.
__________________

__________________
jcrew is offline   Reply With Quote
Old 09-27-2014, 05:22 AM   #2
Golden Master
 
BK_123's Avatar
 
Join Date: Dec 2009
Location: Australia
Posts: 7,556
Default Re: Programming frustration

What languages are you interested in learning, If you are interested in Java, PHP then code academy is an excellent way to learn.

Sent from my GT-I9506 using Computer Forums mobile app
__________________

__________________
BK_123 is offline   Reply With Quote
Old 09-27-2014, 10:05 AM   #3
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Re: Programming frustration

I prefer to stick with C, C++, Java.

However, most of the tutorials on youtube are ridiculously unclear and they advance to the complex stuff pretty fast.
The instructors do not know how to teach code correctly to a newbie. Instead most tutorials teach syntax. That is not how to teach coding.
First I need to learn code, second I need to write it.
A beginner must first understand what is a variable and what is a function and what are source codes and explain each detail down to the core. Explain it in which a way it makes sense...such as teaching a coding class to 6th graders.

Instead instructors say..."this is a function, and this is a variable...and when you type this syntax...then compile it...and look you just created some code!" OK. I didn't learn anything. What are variables, source code, and loops mean? How can you explain these symbols in a way that makes sense?


For example I would teach code like this to a beginner....a function could represent a rectangle. So you would use the code word ..."rect" then a rectangle pops up on the screen. That makes sense.
Or "000" could mean the color black and "277" could mean the color white. So when you type "000" then black comes up on the rectangle.
That makes sense. But what does # mean? What does <info.std> mean to the coder?

Out of the thousands of tutorials this is the best one by far for a absolute beginner who knows nothing about programming.
Processing Hour of Code | Editor


I will try code academy.
__________________
jcrew is offline   Reply With Quote
Old 09-27-2014, 11:02 AM   #4
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Re: Programming frustration

C++, C, and Java.
__________________
jcrew is offline   Reply With Quote
Old 09-27-2014, 11:18 AM   #5
Site Team
 
celegorm's Avatar
 
Join Date: Sep 2006
Posts: 10,720
Send a message via AIM to celegorm
Default Re: Programming frustration

Welcome to the Forum!

I'm gong to dissect your latest post a bit to give you of my personal opinions as a software engineer.

Quote:
Originally Posted by jcrew View Post
I prefer to stick with C, C++, Java.
Good choices. Of the 3 I think Java is easier as you don't need to worry about pointers and references or memory allocation.

Quote:
However, most of the tutorials on youtube are ridiculously unclear and they advance to the complex stuff pretty fast.
The instructors do not know how to teach code correctly to a newbie. Instead most tutorials teach syntax. That is not how to teach coding.
I'd have to disagree with the last sentence here and I'll show why in other comments later on down. 90% of programming is understanding the syntax and how things work together. Think of syntax as grammar, you can't form good English sentences without it, and a line of code is nothing more than a sentence. Thankfully most of the basics in terms of syntax are the same across multiple languages so if you know the syntax for an if-statment in Java, you'll know it in C. What i've found many tutorials focus too hard on is code formatting - or how it looks when you type it. Code should always be readable, but what line the curly braces go on is pure preference and nothing else.

Quote:
First I need to learn code, second I need to write it.
A beginner must first understand what is a variable and what is a function and what are source codes and explain each detail down to the core. Explain it in which a way it makes sense...such as teaching a coding class to 6th graders.
Bad one for me to start with as no, a variable isn't syntax but those typically don't come up until after a few "hello world" type programs. After all, a variable is nothing more than a place-holder for a value. While not useful for an average American 6th grader you can think of it as the "x" in 3x = 9. Actually creating the variable however is pure syntax and needs from the variable (will it only represent a number/letters/whatever?).

Quote:
Instead instructors say..."this is a function, and this is a variable...and when you type this syntax...then compile it...and look you just created some code!" OK. I didn't learn anything. What are variables, source code, and loops mean? How can you explain these symbols in a way that makes sense?
With the exception of code comments, everything you type is source code - and it's all based on the grammatical rules (syntax) of the language you're using.

I believe I've already covered variables above in a quick glance but if you're asking about loops too comment back and we can help out there.

Quote:
But what does # mean? What does <info.std> mean to the coder?
This is more of a targeted answer. In C/C++ the # is reserved for use on include statements. The non-technical answer is that it tells the compiler to do something before it compiles your code. Think of it like telling someone to wash their hands before eating.

I won't pretend to know what info.std is off the top of my head, but what that line of code does is allow you to reuse functions and utilities that were already done and coded within the info.std source code. To use an example:

If I were to write a program to round a number to the nearest whole number. I could write code to do this myself, or I could save myself time and include Math.h (assuming C code) with #include <Math.h> and then just call Math.round(number) to get the rounded number.
__________________
"as a fanboy i refuse to admit it and will pull countless things out of my butt to disprove it"

Team Thelegorm! Total Kills: 21 (i iz in uor profile, editsing your sigz)
celegorm is offline   Reply With Quote
Old 09-27-2014, 11:20 AM   #6
Site Team
 
celegorm's Avatar
 
Join Date: Sep 2006
Posts: 10,720
Send a message via AIM to celegorm
Default Re: Programming frustration

Also,

As for way to learn, if you're not apposed to spending a bit of money, I found the "heads first" books to be pretty good. They got some humor in them that I found amusing as a college student but they walked through things quite well. They have them at Barns And Nobel if you have one near you that you can browse through to see if it's something you'd like.
__________________
"as a fanboy i refuse to admit it and will pull countless things out of my butt to disprove it"

Team Thelegorm! Total Kills: 21 (i iz in uor profile, editsing your sigz)
celegorm is offline   Reply With Quote
Old 09-27-2014, 03:41 PM   #7
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Re: Programming frustration

Celegorm,

All great points and thanks for dissecting it. You made some points clearer.

If grammar is to syntax then, pronunciation is to symbols.

For example....
The C sounds like a "k" sound. Words that have the "k" sound are catatonic, catwalk but are spelled with a C.
The A sound is similar to bat, rat, matt, i.e. Hence, spelled with A.
The T sound is similar to mitt, kit, hit, i.e. Hence, spelled with T.

One must understand spelling/pronunciation before grammar. Machine language(code) is different than just plain English.
Code consists of data, loops, symbols, variables, math, English, and all kinds of gobbley gook. So in order to write clear code one must have a strong command of data, symbols, variables, loops, English, and some math and know exactly where to put them much like grammar.
My goal is to master just the basics of code. I don't want to learn about loops, variables, and symbols yet.

Variables do make sense from Algebra.
x=3.
Answer: 3x-5 = 4

Lets dissect C++ source code.....

I have memorized but do not ask me what it means.

#include <iostream> (what does "#" this mean?)( What is include?) What is <iostream?)

using namespace std; (What is using namespace mean?) Why put std; on the end?)

int main() (int? main?) () ???
{
cout<<"HEY, you, I'm alive! Oh, and Hello World!\n";
cin.get();
}

Cout stands for c output. cin stands for c input. I get that. But why put that before and after a sentence?

It seems that coding is nothing more than just memorizing. I have to remember that "Char" is a data type that is used for what? I forget.
__________________
jcrew is offline   Reply With Quote
Old 09-28-2014, 05:16 AM   #8
Golden Master
 
BK_123's Avatar
 
Join Date: Dec 2009
Location: Australia
Posts: 7,556
Default Re: Programming frustration

The book Celegorm mentioned isn't very expensive, Amazon have it from$25 Head First Java, 2nd Edition: Kathy Sierra, Bert Bates: 9780596009205: Amazon.com: Books.
__________________
BK_123 is offline   Reply With Quote
Old 09-28-2014, 04:54 PM   #9
Site Team
 
celegorm's Avatar
 
Join Date: Sep 2006
Posts: 10,720
Send a message via AIM to celegorm
Default Re: Programming frustration

Quote:
Originally Posted by jcrew View Post
One must understand spelling/pronunciation before grammar. Machine language(code) is different than just plain English.
Code consists of data, loops, symbols, variables, math, English, and all kinds of gobbley gook. So in order to write clear code one must have a strong command of data, symbols, variables, loops, English, and some math and know exactly where to put them much like grammar.
My goal is to master just the basics of code. I don't want to learn about loops, variables, and symbols yet.
Well there's kind of the problem, things like variables and loops are parts of the basics of code. Without them, there isn't much coding that can be done as a program would behave the same every single time it was ran (unless that's what you're looking for, but then you'll get bored and run out of examples very quickly). With the exception of games, pretty much all programming is trying to fix something. Not necessarily because it's broken, but because there could be a way to do it better/faster. Planning and using loops, if-statements and variables properly and efficiently is what programming is truly all about.

Quote:
#include <iostream> (what does "#" this mean?)( What is include?) What is <iostream?)
The "#" is a reserved character, not sure what it's meaning really is in terms of the C language (not used for anything in Java, used for commenting code in python(i think)). All that matters is it must be there for the include.

Include goes back to what I mentioned in my first post where code gets re-used instead of you having to code it up yourself. In this case IO stream is the C language standard for reading from and printing to a command prompt/console window. It is what gives you the ability to do the cin and cout commands below.

Quote:
using namespace std; (What is using namespace mean?) Why put std; on the end?)
Not sure, never used it.

Quote:
int main() (int? main?) () ???
{
cout<<"HEY, you, I'm alive! Oh, and Hello World!\n";
cin.get();
}

Cout stands for c output. cin stands for c input. I get that. But why put that before and after a sentence?
The cout command is the C way of printing things to a console or command prompt. Without the cout the user would never see your sentence. the cin is how the C program reads input from the user's keyboard.

Quote:
It seems that coding is nothing more than just memorizing. I have to remember that "Char" is a data type that is used for what? I forget.
To a degree yes. But kind of like grammar once you grasp a concept you can apply it anywhere without thinking. The difficult part can be remembering the differences between languages. Like the cout you're currently working with is the equivalent of System.out.print() in Java or the "print" command in Python. All 3 do the same function just use different key words.

As for char, a char is a single alpha-numeric character that's 8-bits (1 byte) in length. It seems to be passing out of favor, at least in the field I'm in as it's not very useful compared to Strings, and has a larger memory footprint than a boolean (true/false) value. For intro lessens, chars are typcially used for accepting input from questions like "Would you like to try again [Y\N]".
__________________
"as a fanboy i refuse to admit it and will pull countless things out of my butt to disprove it"

Team Thelegorm! Total Kills: 21 (i iz in uor profile, editsing your sigz)
celegorm is offline   Reply With Quote
Old 09-30-2014, 10:48 AM   #10
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Re: Programming frustration

Great information. I am going to keep plugging away at coding. Its actually fun when you get the hang of it. You mentioned that coding is about fixing things....and actually making a program run faster, etc. That is what motivates me to learn this stuff.

Thanks again.
__________________
jcrew is offline   Reply With Quote
Old 10-01-2014, 04:13 PM   #11
Site Team
 
berry120's Avatar
 
Join Date: Jul 2009
Location: England, UK
Posts: 3,434
Default Re: Programming frustration

Chipping in a bit late here, but the questions that you're asking make it seem like you've tried to do a bit too much a bit quickly (probably copied and pasted a bit much along the way) and you've ended up with half a grasp at a small subset of an incredibly complex language.

Games are always good fun to code, and everyone seems to want to have a stab at making their own - but in all honesty I'd recommend stepping back from this for a while and advise you to get a good book (much like celegorm has already suggested.)

Quote:
It seems that coding is nothing more than just memorizing.
I think you have this from copying / pasting a bit too much without understanding what's going on - and again this is where you'll find a lot of benefit going through a good book from the beginning.

Coding is far from memorising - sure, you'll have to memorize some bits, but they're comparatively little really. The real challenge of coding is putting those bits together in a way that will build a system. And this all comes with practice - just start a bit smaller than a fully fledged game (a calculator perhaps?) and forbid yourself from ever blindly copying something without understanding at least vaguely what it's doing
__________________
Save the whales, feed the hungry, free the mallocs.
berry120 is offline   Reply With Quote
Old 10-02-2014, 08:58 PM   #12
In Runtime
 
tj107us's Avatar
 
Join Date: Apr 2010
Location: USA
Posts: 332
Default Re: Programming frustration

Tony gaddis', starting out with programming logic and design 3rd edition is a great book to read and understand. We used that book im my programming class in college. It teaches the basics without teaching a particular language.
__________________
Intel Core I7 930 OCed to 3.5Ghz
ASUS P6X58D-E Motherboard
(3x4Gb) of Kingston 1333Mhz RAM
Corsair 950 Watt PSU
Corsair H70 Cooler
ATI (AMD) 5770 GPU
WD 1Tb black HDD
WD 500Gb black HDD
All in a Cooler Master HAF 932 Case
tj107us is offline   Reply With Quote
Old 10-14-2014, 10:23 AM   #13
Site Team
 
root's Avatar
 
Join Date: Mar 2004
Posts: 8,107
Default Re: Programming frustration

ok...

I'm not sure I agree with the idea of teaching, because I think in finding out what you want to know I'm about to confuse you more.
This is sadly why C is taught in a variety of ways which are mostly the same. introduce functions, get you comfortable with syntax, then explain the boring bits.

That, and keeping interest tends to mean that you're taught a few how to do crap, before you're taught why to do crap. when you get to the why you already got the boring bit by being excited about writing something useful. - e.g you'll turn more students off by leaping into advanced theory why and wherefores before actually producing a bit of code.

# is a compiler directive.

#define, suggests that you are going to define something.
#include means you want to include a whole other file of source code.
I have in my time used #byte to assign a value to a variable. for example if you use the CCS C compiler and the 16f628 series of chips, port a (name on the datasheet is controlled by register 5. to assign a variable to a register the precompiler used #byte e.g #byte PORTA = 5
(note no trailing semicolon)

Compiler directives may change depending on what compiler you are using. for example the borland compiler has no #byte predirective, neither does GCC on windows or Linux, (though this might if you're targetting embedded processors).


a char is simply a charector, a signed 8 bit number = -128 to 127
an unsigned char is a char without a signed bit e.g. 0 - 255


in relation to cout, cin these are as you say a way to get characters into or out of your program.



As for when you may use a loop or some other logic statement...
In everyday life you kind of sub consciously use loops all the time. (what's my temperature, is is comfortable? put on or take off jumper)

so you have a start point, a question or condition, you check if the condition is satisfied and depending on the outcome you do it all over again.
Code:
start, 
is paint dry?
if no then got start
if yes then carry on...
so if is important to learn how to use loops.

If you want to write the words hello worls 100 times you can either write
Code:
cout << "hello world";
cout << hello world
...
...
and on

or.
Code:
x = 0;
while (x<=100)
{
x+1; //make x bigger each time you go through the loop else you;ll be stuck in it forever;
cout << "hello world";
}



as before, #include is a way to include other files.

#include <math.h> includes math related libraries and functions
#include <my_other_code_functions.cpp> would include code functions that you may write yourself, (so if you have a library of stuff build up over a long time you can just reference stuff without inventing the wheel each time.

int is short for integer, every function is expected to be able to return something, that main defines your main function, main functions return status codes 0 for success then anything after that.

so for example I could have a function,
Code:
int add(int a, int b)
{
int c;
c = a + b;
return c;
}
this is a function that will be passed two integer values and return one integer value.
you see inside the function a third integer is defined (c) this is the one that gets passed back.


iostream is the header that controls the.. well io stream,
you need it before you can use cout and cin as these functions are defined inside that header
<iostream> - C++ Reference

using namespace std is a bit like that io stream thing.
it is quite literally saying using a standard namespace called std.

you can assign other names to your name spaces.

using namespace bob, then name space is the space that holds the named variables...

as you name variables inside namespaces you can re-use some variable names.

for example
Code:
#include <iosteam>
using namespace std;
int x = 1;

namespace bob
{
int x = 2;
}
using namespace john
{int x = 3;

int main ()
{
cout << x << '\n'; //(will cause the value from the standard name space (1) to be output)
using namespace bob;
cout << x << '\n'; //(will cause the value from the bob name space (since we're using that now (2) to be output)
using namespace john;
cout << std::x << '\n'; //(will cause the x value from the Std name space to be output, even though we're using namespace called john, we explicitly request std::x

cout << bob::x << '\n'; //(causes the x value from namespace bob to be output (2) again even though we're using namespace john.

quote why you'd want to assign the same variable name in different name spaces and most likely ultimately confuse yourself is something I'm yet to fathom out.

(i mean why not use int bob_x, john_x etc)


Is that any more or less clear?
__________________
I didn’t fight my way to the top of the food chain to be a vegetarian…
Im sick of people saying 'dont waste paper'. If trees wanted to live, they'd all carry guns.
"The inherent vice of capitalism is the unequal sharing of blessings; The inherent vice of socialism is the equal sharing of miseries."
root is offline   Reply With Quote
Old 10-14-2014, 12:01 PM   #14
Solid State Member
 
Join Date: Sep 2014
Location: US
Posts: 13
Default Re: Programming frustration

Root,

This is brilliant information. I will copy and paste what you wrote and add it to my programming library. That is a wealth of knowledge and it makes more sense to me. The # compiler directive always tripped me and I wondered why I needed it. Now I know.
#include is to include other files. The word "include" made sense because I used it in C++ to add other files to my programs. The # is what I couldn't understand.

The variables make sense now. I used char quite a bit and looked it up on google to try to understand how to use it.

You made it much clearer. This is what I need to focus on why I am putting the variables and loops in a syntax rather tan just memorizing and not knowing much about them.

Cheers!
__________________
jcrew is offline   Reply With Quote
Old 10-16-2014, 05:13 AM   #15
Site Team
 
root's Avatar
 
Join Date: Mar 2004
Posts: 8,107
Default Re: Programming frustration

To be honest, I think that it is best to learn by doing.
i.e you make a program to do something, and in making a program that does something you have a start/middle and end.

and when you're learning it really is best to keep it simple!

when I say start middle and end I mean.

If I say write a program to open up a console, display the words hello world, and then close.

can you do that?

next exercise:
create a program that asks you for a number and lets you type in a whole number,
then asks you for a second number and lets you type in a whole number
Then it should add those numbers together and display the answer.
number 1 + number 2 = answer
then exits.


The trouble is that this is a lot more boring than you'd imagine.
It's the lab exercises such as that that most people try to avoid. -which in a way is what you've done when you first started, if you copy any paste pre-existing code then it's difficult to say that you know how to program, it's more real to say that you know how to work a compiler.

That hello world program is usually the first thing that you're taught in any program.
the whole point of a program is to be able to do something, usually take input and give results, thus the ability to communicate "in some way" is principally the most important thing a program can do. -if a program just took in data and never gave out data then it's not really a useful program is it.


The second program is important because it teaches you how to get data into the program.

The mission take and add up two whole numbers suggests that you should define data types as integers.
then you scan in numbers to the program and you expect integer numbers.

but you should check what happens if I write Alice when asked for the first whole number, what if I write bob when asked for the second. what's the result? and why? etc...

Then you get into thinking about what variables you're using, the data types. How if a user has a whole keyboard you can't trust them to only press the numbers when instructed. etc...

Then when you're comfortable with "basic" programs move onto more advanced ones...

Sadly, most people will never stop to wonder what they are doing, and why they are doing it like you have, so most will never understand the datatypes they are using, or how or why they are doing certain things.
__________________
I didn’t fight my way to the top of the food chain to be a vegetarian…
Im sick of people saying 'dont waste paper'. If trees wanted to live, they'd all carry guns.
"The inherent vice of capitalism is the unequal sharing of blessings; The inherent vice of socialism is the equal sharing of miseries."
root is offline   Reply With Quote
Old 10-25-2014, 02:12 PM   #16
In Runtime
 
Join Date: Feb 2013
Location: UK
Posts: 156
Default Re: Programming frustration

Jcrew, firstly based on how you're phrasing your questions you certainly have noble aspirations and a keen interest to understand exactly what each line of code means. I have to say this is a personal quality which the vast majority of students on my CompSci degree completely ignored. I commend you highly for this.

Secondly, I can't possibly begin to provide detailed answers to all the (very good) questions which have been raised thus far in this threat, however I hope that I can provide you some additional direction to complement what others (celegorm and root particularly) have already offered.

I'm just dealing with C/C++ here since that is what most interest appears to be in. And whilst learning Java first is probably easier as it abstracts a lot of technical concepts away from the programmer, this actually makes what you're trying to learn (how things really do what they do, and why the code is written the way it is) much harder and hence I strongly recommend you stick to C to begin with (not even C++ as this is a much larger superset of C and you needn't worry about any of that until you're capable with C).

To that end, I cannot stress enough the importance of one single book (http://books.cat-v.org/computer-scie...nd.Edition.pdf for an online copy or http://www.amazon.co.uk/The-Programm.../dp/0131103628 to purchase - MAKE SURE YOU GET THE SECOND EDITION (as per the links)!)

The above is literally the book on the language, and explains practically every construct in minute detail. It is referred to as the C bible and is well known as 'K&R' after the authors who invented the language.

Disclaimer: I cannot guarantee that this is absolutely 100% correct on all technical details, having worked with C professionally over the last 7 years I have learnt that every week you 'learn' something which you thought you already knew!

So, some detail. Others covered the fact that '#' is a preprocessor directive. The preprocessor is one stage of the 'build process'.

Build process

Essentially to 'build' (make an artefact e.g. executable or library) your code, several passes are done. These transition from source the final artefact, i.e. .c -> .o -> .exe or .so or .a
Note: Whilst on Windows you'd get .exe and .dll, on linux and other platforms you'd get a blank extension (i.e. myprog vs. myprog.exe) and .so or .a for a shared library or static library, respectively.

1) First the preprocessor is invoked, this executes all #define statements and replaces wherever the named symbol occurs in your source code with the actual definition (apologies for not giving examples of all the things I'm talking about here, it's all in the book above though!).
As well as #define statements, the pre-processor also resolves all #include directives to ensure that any header files are present on the system (you should never include a .c/.cpp file unless you really know what you're doing and why you have to..). This is done because there is no point even starting to compile your own source code if the code upon which it depends isn't even found on your system.

For more information on this side of things, read about the 'Include Path' which needs to be set for your compiler to be able to find all the include files you want. It is very back practice to have absolute paths - or even long relative ones - in your source code as it makes portability and readability difficult.

The pre-processor probably does other things as well, but these are the most important two.

2) After the preprocessor has finished (assuming without errors) then the compiler is invoked. This where all your source code is checked for syntax errors, this could be missing ';' between statements (a statement is a single specific instruction - I have used several keywords deliberately in this post as they are correct terminology, however I can't explain them all but you'll recognise them when you see them elsewhere), illegal use of reserved keywords (e.g. a variable called 'int') etc.

I italicised the 'your' in that section because the header files which you are 'including' via the #include directive should have compiled objects already associated to them. However, if this is not the case then these too will be compiled.

3) After compilation (again assuming no errors), you get to the linking/linker phase. This is the final stage of the build process. At this point you'll have a series of binary object files (typically 'mysourcefile.o') which relate to each of your source files, however you have no executable, or library artefact, which you can actually run or share with another application, respectively.

The Linker is a stage which combines all these independent objects into the desired output, like a executable program in the simplest examples. Many programmers (even those who've completed a degree and done 1-2 years professional experience) will fall foul of the infamous 'undefined reference' error message, which is commonly mis-described as a compiler error. In fact this is a linker error and basically means that an object which the linker is currently processing makes reference (calls/invokes) to a function which exists in one of the other objects, however the linker has not been told where this other object lives, and hence can't see the definition which this reference relates to.

Data Structures and Algorithms

Once you've understood these principles you can move on to more abstract constructs like Data Structures and Algorithms - this is the foundation of every program and a solid understanding of how and when to use what data structure (and associated algorithm) is the first and most important criteria when hiring any programmer. This is a language-agnostic skill and clearly demonstrates logic, creative problem-solving and provokes thought about what design decisions and user requirements will influence the functionality and performance of any program.

I won't go on any more, there should be more than enough there for anyone to digest in one go. I will leave you with one final thought though...

Debugging is your friend, you'll learn 10x more fixing a program that doesn't work vs. writing it 'correctly' (i.e. one which does what you want it to, not necessarily in the best way) first time around.

Hope that helps,
Michael.
__________________
_michaelm is offline   Reply With Quote
Old 10-26-2014, 04:23 AM   #17
In Runtime
 
Join Date: Feb 2013
Location: UK
Posts: 156
Default Re: Programming frustration

I'm sure you used to be able to edit posts here.. but I can't seem to find that now, so:

Edits:
1) ...thus far in this thread**
2) ...from source to the final artefact i.e. .c-> ...
3) ...this interprets (not executes) all #define statements...
4) ...it is very bad practice to have absolute paths...

Apologies for any confusion caused.
__________________

__________________
_michaelm is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off



All times are GMT -5. The time now is 06:09 PM.


Powered by vBulletin® Version 3.8.8 Beta 4
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO 3.6.0
×