I'm assuming you are talking about punching buttons on your keyboard to make computer do stuffs and not coding in coding theory. I have never really used the term "coding" to refer to programming.
How difficult is programming?
About as difficult as writing a story.
Programming is about expressing your imaginations and daydreams in the most honest way possible through formal logic. So it's not just about telling the computer to do something for you, it's also about telling a good story through a novel medium of the 20th century called the "programming language", a story that everyone can agree on what exactly happened, and the computer realizes that story.
I consider programming a branch of mathematical logic, mathematicians write stories too, except they don't use programming language and they don't care about realizing (or should I say reify?) their stories. Physicists (after Bohr) officially recognize that some stories are best left in the abstract realm :)) (but when they get old, the bad habit keeps coming back)
Is it worth it to learn on one's own?
Yes. I don't know any other way to really learn it. Programming is not something that other people can just tell you what to do and you repeat it.
What should I use as a reference?
try SICP
https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-9.html#%_chap_1
alternative link: https://web.mit.edu/alexmv/6.037/sicp.pdf
This is the book I used to learn programming when I was your age. SICP is a rather unique book in that if you read it at young age it might alter your fundamental beliefs about computers and programming. Not everybody will experience this.
A brief overview:
Chapter 1: building abstractions with procedures:
Programming starts with three essential mechanisms to express complex ideas: primitive expressions, means of combination (operators and call expressions) and means of abstraction (naming, variables)
and two things those mechanisms act on: procedures (basically functions) and data.
Going deeper into procedures/functions, you learn about the typical patterns called recursion and higher order procedures - how to pass functions around as arguments and return them as values (think of them like the kind of plots a good story usually has).
Chapter 2 goes deeper into the other thing: data, first, their structure, then how to abstract data by imitating those structures and make programs operate on abstract data. The most fundamental data structure is a list, everything is a list :) basically a finite sequence, a n-tuple, yes it's literally just a vector from linear algebra lol...
and you will learn how to make programs process lists. A simple operation that is said to be powerful enough to simulate the universe.
Chapter 3 is less about abstraction and more about the reality you encounter whenever you design programs (or tell your story): objects and states, the previous chapters are about the plot lines, these are your main characters.
Introducing assignment statements allows variable to change value, which leads to the creation and maintenance of objects with state. Our data is now mutable (more flexible). Our programs now have local states, and it's no longer a black box with inputs and outputs, it has side effects going on inside the box.
Then the book tells you about the power of mutable data: the ability to model reality from simple things like circuits to Lagrangian mechanics (which is pretty much 100% of physics before 20th century).
Then the book tells you about the cost of mutable data: time has entered the picture (before our programs were timeless, expressions have unchanging values). This leads to issues with concurrency. To process big list efficiently, you need objects with concurrency, but this doesn't work with mutable state. The notion of streams was introduced to solve this problem. Stream is a mechanism for delayed execution of functions on lists. The main idea when you process a list L with function f, you don't do all computations f (L (i)) at the time the f is called, instead f returns another function g = f (L) that will do the computation on its corresponding list element L (i) at the time that L (i) is needed, basically f (L (i)) = g (i)
At the end of the chapter, the book tells you when objects are useful, you don't want to use them for everything, it's also the best exposition on Quantum Mechanics I read at the time (lol)
The object model approximates the world by dividing it into separate pieces. The functional model does not modularize along object boundaries. The object model is useful when the unshared state of the “objects” is much larger than the state that they share. An example of a place where the object viewpoint fails is quantum mechanics, where thinking of things as individual particles leads to paradoxes and confusions. Unifying the object view with the functional view may have little to do with programming, but rather with fundamental epistemological issues.Chapter 3 is the end of the basic parts of the book. Chapter 4 is where you finally ascend to become an apprentice wizard.
Chapter 4 teaches you how to teach your computer to read your story, by telling it a story :))
In other words, you learn to design an interpreter:
The evaluator, which determines the meaning of expressions in a programming language, is just another program.
First, you learn the most fundamental interpreter: the meta-circular evaluator.
The two central concepts are `Eval` and `Apply`. It's meta because it acts on the language elements, it's circular because it's a circle :)
in `Eval` you call `Apply`, in `Apply` you call `Eval`. You can find the `Eval` - `Apply` symbolism in the front cover.
Second, you learn the lazy interpreter that does delayed evaluation. We have entered the domain of creating new languages from existing ones:
... new languages are often invented by first writing an evaluator that embeds the new language within an existing high-level languageThird, you learn the nondeterministic program interpreter, it does ambiguous evaluation, it's called `amb` :)) featuring automatic search: you specify a problem, an input range, the interpreter searches all solutions that satisfy the constraints.
In the last section of chapter 4, you learn how to build an interpreter for logic programming. Basically this interpreter turns your programming language into a logical language: first order logic. This is familiar ground for math students. I enjoyed this section. It should be obvious that the `amb` interpreter above is very close to dealing with declarative sentences in logic so that should be the starting point right? nope, we do it the hard way, the book tells you to start from the lazy interpreter (it's pretty hilarious, but building logic interpreter from `amb` was left as an exercise)
Chapter 5 is the entry to the domain of Wizards, you like computers? here we build a computer within your computer: the register machine
Starting with a quote from Johannes Kepler "the heavenly machine is not a kind of divine, live being, but a kind of clockwork ", the goal is now to tell your computer how to realize your story. By "your computer" I mean the register machine model that carries out sequential instructions in assembly language by loading and storing fixed memory elements (the registers), it's a program in your real computer lol.
Some details of the interpreter were mysterious before because it's a program that interprets programs so the inherited structure has no further details. Now these details are completely transparent because the interpreter is a program that interprets programs but also runs in a simulated computer that we built. The processes are no longer directly described by language elements but by step-by-step operations of a traditional computer and the computer is described by language elements.
Again to appreciate how trippy this is:
we now have an interpreter that turns a typical programing language's code into assembly code, and runs it on a model of a computer (the register machine); and this is all done inside another interpreter of that same language, this interpreter is running on the real computer, e. g your laptop.
The final section of the book is a glimpse into the Sword and sorcery of programming: how to build a Compiler.The idea is to by pass the interpreter. We want our high level language to turn directly into assembly language through a process called compilation, our register machine also needs to be modified to not rely on the interpreter. The "typical" high level language mentioned above and the one this book uses is called Scheme. Don't worry you're not gonna get any job writing Scheme code. In the last two exercises you write a Scheme interpreter in C and a compiler in C. When you move to C it's basically a welcome to the real world of programming.
Basically, just read chapter 1-3 (and maybe 4.1) and do every exercises. Yes, it's possible to solve programming problems with pen and paper, though I would recommend using the computer at some point :))
download and install https://racket-lang.org/
and https://docs.racket-lang.org/sicp-manual/index.html
Most Helpful Opinions
Depends. I find coding to be easy and fun. Also it depends where you start.
Coding in Java can be intimidating. I find python best for beginners. The syntax is so beginner friendly and so much fun 😍. And there are so many modules you can use.
Once you understand how programs work, it becomes easy. Because all orogamming languages function similarly, with different syntax.
Same old variables, datatypes, iterators (loops), collective data types - all these are common to all programming languages... With the exception of differing syntaxes.
Also... Some programming languages are more suited for certain specific tasks.
If you're goal is Data Analysis, complex mathematics and AI related, go for Python and MATLAB
You want to learn and have fun competing online - go for C++ (also predominantly used for android libraries)
Want to learn about Operating System and Android Kernel - C
(C might seem different from other programming languages as it isn't object oriented)
Appsand softwares - Java, Kotlin
Web development - HTML, CSS, PHP, JavaScript
Database related - SQL
So it depends what you are interested in. If you see that a particular language suits your interest them you might enjoy learning that language and programming would seem a lot easier as compared to other languages.
In general if someone wants to start coding, I'd suggest Python. 😊
It depends on a lot of factors, what are you trying to code? For example, web programming is easier than programming for NASA. I graduated this year with a degree in Computer Science, and I have grown to hate programming/coding. I love that you can create and make many things with it, but I personally hated the process and career field. Strict deadlines, and getting a project that you don't know if you'll be able to figure out, or if you'll get stuck on it was a huge stress for me.
Coding is like a logic puzzle, and I like that aspect of it! But be prepared for things to go wrong because it will. In my experience, programming goes like this: do a lot of work, expect it to go wrong; ok what went wrong? Find the error and fix it. Then run the program. Another error. What's wrong now? Find that error and fix it. It works! Work a little more. Another error. What's wrong now? Spend 3 hours working on it, to find it was a typo that broke everything. Great! Everything works! Work some more. Now everything is breaking. Realize your whole fundamental logic is broken. Fix it. Now you have new errors. You find and fix the errors! Repeat.
This is a lot of programming, and why I'm trying to get a job unrelated to programming. But, if you really love it, go for it! I say all of these negative things, but I have talked to so many people who love it, and I don't want to discourage you. There are a lot of cool and awesome things about the field too! Ask me any questions you want!
It's not nearly as difficult as you'd think. It's not so much that it's difficult as that it takes a lot of time/effort/discipline to become proficient in a language if you're learning on your own. But if you want to do it then go for it! You don't have to be a genius to learn online on your own and it can open up a lot of opportunities!
What Girls & Guys Said
Opinion
33Opinion
I'm no expert, but I'm learning sql off udemy. Think the course was like £12 reduced.
I don't think it's hugely intellectually challenging. But it'll definitely keep you engaged. From what I can gather it's more like learning a language, ie it's all about practicising speaking. It becomes easier with familiarity.
The frustrating part is when you have a problem and you don't have a decent source of help. That's what'll make you throw your comp out of a window. Youtube is actually a good resource also in addition to what has been mentioned. Look for videos that are popular and have good feedback.it's worth learning but speaking from experience of someone who wanted to code games years ago, and never got the chance despite applying for a programming course at the local college... few years down the line and a friend of mine who runs his own company doing websites, tried teaching me to read and create code, my brain almost fried... it was that moment i realised not only am i better with hardware but Coding, isn't for everyone...
with that being said... it is well worth learning, and seeing if you can achieve what others have not, and as such i would wish you luck... and follow what you want to do in life...
start out on the most common and simplest language for coding you can and work up from there...JavaScript is a very good start. It can be used for Web development or application development and it's cross platform (C++ is very popular also). However for simplicity reasons and for the sake of training how to code Python 3 can be used too and I saw Python web servers being hosted.
Coding is "not that hard". The hardest parts are debugging and finding out where the problem is and where the code malfunctioned or why your device does not do as you want it to do.
If you aim to become a software engineer or software tester, you'll find that these skills are essential to have much like knowing English if you live in the USA.Depends on what coding, telling a machine to print a name is probably not perticularly difficult... at least for a human so... You could argue the complecity is upon the task not the language itself... how difficult is writing or English? Depends on what you're writing I guess... if you're writing a sentence or a letter maybe not so much but if you're writing a novel or a theory maybe... The complexity is on your problem solving... at least to some extent... i have forgotten languages to some extent but I don't really forget how it works... as in overall to some extent... again...
Well I am actually learning front-end and back-end coding as we speak.
I am in a sort-of boot camp.
And tbh, when I apply myself, coding is really not any harder than learning to do anything else really.
Once you understand the concepts, everything else is EASY PEASY LEMON SQUEEZY.
If you have any questions about it, feel free to ask me anything about coding or related topics... I would be happy to help.
(I think it's a great idea that you would take interest in coding and frankly, I wish more girls would get into it as you can make some GREAT money.It can be difficult, depending on what you want to do with it. And yes, it's worth learning on your own. I recommend Python - it's a good all-around general purpose programming language that pretty much everybody uses these days. As for reference, there are a lot of resources out there but the cool kids are all on Stack Overflow.
Depends on you! Some people have the 'mind' for it, and just 'see it'. Others, like me, learn it by having a project, and figuring it out, along the way, sometimes using 'colorful metaphors' when 'lovingly speaking' to our computers, that aren't doing what we think we are telling them to do!! :) :)
It depends on what you trying to do. As an engineer, I learnt python and C . However I do not apply C that much. For most of the things I do python is ok. But I don't even use that. I prefer doing the stuff on matlab.
But if you really want to learn, than my suggestion is start on python. Personally I found it much easier than any of the others.It can be interesting and also rewarding if you stay with it. If I were you and that's what you're interested in, I wouldn't waste time spending money on schools. I would get the books from ebay and study them. They used to be expensive but you can probably picked them up pretty cheap now. I will give you the names of some of the books I have, or make that had because they've all been contaminated by a nasty neighbor's house that got my house. But they may still be there, let me know if you'd be interested in knowing.
Like someone else said, it's not really hard. If you want, DM me about what you want to do and stuff, and maybe I can help guide you a bit
Well I guess it really depends on the programming language and how much experience you have. Also writing code is not that hard. But writing good code can be very challenging. And a lot of time you need to read code from another person and reading bad written code can be super annoying. A lot of persons are writing anti patterns at the beginning. The most common ones I've seen are spaghetti code, lasagna code, magic numbers, programming by permutation and copy and paste.
depends. if you code html, css and proceed to javascript it's easy.
if you wanna take on the background procedude it's gonna be python, c++, java.
java knowingly being the "easiest one" but also the more code strict approach.
since I am also just a beginner who managed to create his own website but still has basic knowledge of coding I say it can be quite hard.
right now I am using CheckIO from time to time to fix a lot of weakpointsit's litterally like learning a language. i wouldn't say it's "that" difficult. i just takes time. and if you don't put in the time, you'll struggle.
I used a website called scratch to get started on the very basics, and then went to Khan academy.
Some people have trouble with it Some find it easy I encourage you to try it there is code academy khan academy and alison. com as free resources good luck on your path
LEARN NOW
don't worry about how difficult it is, the job market is so lucrative, you don't need to make 200k at google, you can get by fine making 80k within a few years of working full time even if you aren't that great
message me if you want resources to start your journeyThere is a website with free online courses called Coursera. I want to do it but just too lazy on summer break.
Basic application programming is pretty straight forward.
Tricky stuff, like low-level system programming or game programming, that's quite tricky.It’s quite easy, once you get a hold of the basic syntax of the language you just have to learn about its native functions and libraries
I wouldn't say it's hard.. but it takes a LOT of patience.
Learn more
We're glad to see you liked this post.
You can also add your opinion below!