[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/diy/ - Do It Yourself


View post   

File: 127 KB, 1140x642, 7CC6CA6B-C224-4EE1-ABC1-149DCC0BD4C3.jpg [View same] [iqdb] [saucenao] [google]
1414158 No.1414158 [Reply] [Original]

>Be weary of enemies
I want to learn how to program, I have no skills and want to pour what ever remains in me to coding.
>Books
I walked across the street from where I work to buy a C+ book, but I wanna know if there is anything else to aid me?

>> No.1414161

>>1414158
google CS50 EdX, sign up and do it.

>> No.1414166

The state of diy.

>> No.1414171

>>1414158
>C+
It's C++
Also C++ is a shitty language (but so is literally every other language too, so don't sweat too much about it.)

Get Code Complete for good coding practices.
Don't take "patterns" books too seriously. Design patterns are mostly ways to work around a deficiency in a programming language. People who take design patterns seriously are pretentious know-nothings trying to make themselves sound smart, who couldn't program their way out of a wet paper bag.

>>1414166
>i'm gonna bait diy into giving answers hehe
gay to be honest

>> No.1414194

>>1414158
Your "first language" doesn't matter. As you learn your second or third imperative-style programming language they all start to blend in.
Having said that, give this a shot: http://interactivepython.org/runestone/static/thinkcspy/index.html
After that, read and complete the exercises found in Introduction to Algorithms by CLRS. Then you'll be on par with any sophomore or junior CS student.

>>1414171
>mostly ways to work around a deficiency in a programming language
t. freelancer never "worked" a day in his life
They're about designing things in a way that OTHER people can actually read what the fuck you wrote.
The machine might be able to parse your shitty chicken scratch and fulfill the requirements of the hapless stakeholder you scammed into giving you a project, but god help us if another human has to.

>> No.1414200

>>1414171
Naw, I meant the state of DIY referring to OP's gay ways.

There's a tech board and this low level bullshit gets posted here. He could have youtubed it or googled it.

Then there are all of the same, low level auto and transportation posts in here.

I come here for the dock repair and am always dissapointed.

>> No.1414244

>>1414200
>I come here for the dock repair and am always dissapointed
Boots

>> No.1414256
File: 26 KB, 345x230, Side.jpg [View same] [iqdb] [saucenao] [google]
1414256

>>1414244
on the ground

>> No.1414282

>>1414158
Accelerated C++ by Koenig and Moo is a good book. Gets right into using the standard template library. There are also two free books, 'Thinking in C++' that are good.

The biggest challenge I found with programming is moving from beginner to intermediate. There's no shortage of tutorials explaining loops, pointers, etc... but once you're past that trivial stage and you want to build something useful, you're on your own.

t. some dickhead that learned C to program microcontrollers and C++ to make his own book cataloging software (still in development)

>> No.1414289
File: 79 KB, 508x600, tay_so_nice_no_red_lipstick.jpg [View same] [iqdb] [saucenao] [google]
1414289

>>1414282
>some dickhead that learned C to program microcontrollers

jeez.

>> No.1414301

>>1414158

Python is the easiest foot in the door to learn the logic behind coding. Then learn another language depending on where you wanna go.

>> No.1414308

>>1414289
those LEDs aint gonna blink themselves buddy

>> No.1414353

>>1414301
>Python is the easiest foot in the door to learn the logic behind coding

Its the easiest language to get instant gratification. You can learn to "code" basic programs in 30 minutes in python.
The fact that is it so high level is also the reason why you dont actually learn "logic behind coding" at all.

You are better off starting lower level in the long run

>> No.1414366

>>1414289
When u are short on time C is okay

>> No.1414373

>>1414194
You're a "True Believer" with your tongue so far up the ass of the "gang of four" that you can't even imagine there's legitimate criticism of them.
I bet you even like C++. Disgusting.

>> No.1414786

>>1414158
First thing first. Do you even know a damn thing about computers?

>> No.1414877

>>1414158
I work as software engineer. You could go to /g/ dpt for the latest meme books. Don't listen to what the people say over there though. Most of them are braindead idiots that don't have any idea what they are talking about. If you have a question, type it into google. Knowing how to google is a skill just as important as knowing how to code.

>> No.1414890

>>1414373
t. NEET

Design patterns are just widely recognized design metaphors. If you think that they are any more than that, you're both retarded and incapable of communicating with others.

Yeah, wherever you "work", I want to have absolutely nothing to do with it, because it would be impossible to explain to you how to architect an application due to your autistic fixation on design patterns.

>> No.1414909

>>1414289
you do ln(), exp(), sin(), cos(), etc() in assembler?

>> No.1414920
File: 23 KB, 275x195, family-guy-peter-griffin-vector-thumb-275x195.jpg [View same] [iqdb] [saucenao] [google]
1414920

You need some therapy

>> No.1414961

>>1414909
Taylor series

>> No.1415069

>>1414877
>Knowing how to google is a skill just as important as knowing how to code
This is great advice OP. I am application developer and knowing how to use google will help you so much.

>> No.1416471

>>1414158
https://4chan-science.wikia.com/wiki/Computer_Science_and_Engineering#Basic_Programming_.26_Data_Structures

tl;dr version:

>Basic Programming syntax (don't worry if afterwards you feel like you have the tools but don't know how to use them to do anything nontrivial, it's normal at this point)
Programming: Principles and Practice Using C++ by Stroustrup
(supplement) C++ Primer by Lippman, Lajoie, and Moo
>Basic Data Structures (this is where you start getting a feel for how to use your tool set)
Data Structures and Algorithms in C++ by Drozdek
(supplement) Data Structures and Algorithms by Aho, Ullman, and Hopcroft
>Math background (for algorithms)
Book of Proof by Hammack (http://www.people.vcu.edu/~rhammack/BookOfProof/))
Introduction to Probability by Bertsekas and Tsitsiklis (skip-able if you're not going to go further)
>Basic Algorithms
Algorithm Design by Kleinberg and Tardos
(supplement) Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
>Computer Systems and Architecture
Advanced Programming in the UNIX Environment by Stevens and Rago
Computer Systems: A Programmer's Perspective by Bryant & O'Hallaron (optional)

>> No.1417075

>>>/g/
Instead of getting hung up on bs, decide what you want to do.
Microcontrollers & arduino = python or C
Webpages? JavaScript
Scripts? Python, ruby or bash
Etc

>> No.1419026

>>1414158
find a program which does something cool, use google and youtube tutorials to modify it into doing something else cool.

spend a lot of time on google and youtube. copy/paste as much as possible.

>> No.1419033
File: 9 KB, 511x494, sicp1450651227519-1.gif [View same] [iqdb] [saucenao] [google]
1419033

>>1417075
Why would you redirect them to the Cellphone, Social Media, and Consumer Whore board?
I would be so down to have /prog/ be revived on /diy/.
That this wasn't posted yet is sort of disappointing though.
All you need OP:
https://archive.org/details/MIT_Structure_of_Computer_Programs_1986/
https://mitpress.mit.edu/sicp/full-text/book/book.html

>> No.1419045

Python

>> No.1419047

>>1419033
There is a coding general, and they will just tell you to git gud and learn C

>> No.1419049

>>1414961
Why do you do this to yourself

>> No.1419055

whatever you do, don't go to /g/, it used to be a great board ~7 years ago but now its utter trash

>> No.1419214

>>1414158
Why wouldny you ask /g/ instead.
Or better yet, /b/, where you came from.

>> No.1421257

>>1414909
Yes. You just need a relevant processor to do that, or a coprocessor for other (i.e retarded) ones.

>>1414961
GTFO

>> No.1421316 [DELETED] 

>>1414158
First things first, that pic is one creepy motherfucker.

I am learning too OP. The C language with only the most basic tools, online courses and one project I will be focus on. These is my plan:

>Introductory reading
How to think programming: https://www.reddit.com/r/learnprogramming/comments/2qznse/i_need_serious_help_learn_to_program_was_my_new/cnb1luk
How to read code: http://worrydream.com/LearnableProgramming/
To see is to believe: https://vimeo.com/36579366
Understand abstraction: http://worrydream.com/LadderOfAbstraction/
The importance an open environment to get things done: https://opensource.com/life/16/7/linux-theoretical-physics
How to learn Computer Programming: https://tudurom.github.io/blog/2017/10/27/how-to-programming/

Now I need to find a group to where to learn together about this project I am working on.

>Courses
https://www.edx.org/course/think-create-code-adelaidex-code101x-3
https://www.edx.org/course/programming-basics

>>1419033
>I would be so down to have /prog/ be revived on /diy/.
I am down too, lets go.

>> No.1421321

>>1414158
First things first, that pic is one creepy motherfucker.

I am learning too OP. The C language with only the most basic tools, online courses and one project I will be focus on. This is part of my plan:

>Introductory reading
How to think programming: https://www.reddit.com/r/learnprogramming/comments/2qznse/i_need_serious_help_learn_to_program_was_my_new/cnb1luk
How to read code: http://worrydream.com/LearnableProgramming/
To see is to believe: https://vimeo.com/36579366
Understand abstraction: http://worrydream.com/LadderOfAbstraction/
The importance an open environment to get things done: https://opensource.com/life/16/7/linux-theoretical-physics
How to learn Computer Programming: https://tudurom.github.io/blog/2017/10/27/how-to-programming/

>Courses
https://www.edx.org/course/think-create-code-adelaidex-code101x-3
https://www.edx.org/course/programming-basics

Now I need to find a group to where to learn together about this project I am working on.

>>1419033
>I would be so down to have /prog/ be revived on /diy/.
I am down too.

>> No.1423416
File: 51 KB, 1024x1024, p.png [View same] [iqdb] [saucenao] [google]
1423416

>>1414158
Hey OP,

Ph.D in computer science, drunk as hell though so bear with this post.

The low level languages C,C++,Go (and the thousand other) and anything at the assembly level will never be of use to you as a civilian programmer. The reason we use them as [system,game,hardware] programmers is efficiency. If you are not writing code that have performance concerns don't bother starting with or even learning these languages.

If you want to learn how to do things like "download every image from a thread on 4chan", or "Broadcast emails to a list scraped from the internet", or "rename all the files in my filesystem with a given prefix, and move them to a backup directory" you should learn a scripting language.

Python is the most accessible and powerful, it will teach you good practices and all of the semantics of imperative programming (well not all but the most important).

If you learn python you will learn how to speak to computers more intimately than 99.9% of the population, and on your journey you will learn the basics of how to defend yourself on the internet, and protect yourself from real life enemies.

JavaScript is a fucked language, but if you learn it you can easily write websites which is fun and you can share it with others.

have a nice life.

>> No.1423421

>>1416471
>Programming: Principles and Practice Using C++ by Stroustrup
Great book, especially for people with little to no programming experience.

>> No.1423423

>>1414158
There are two groups of languages (as far as you are concerned). Compiled and interpreted.
C++ is compiled which makes it a nightmare for beginners. Python is interpreted which is a huge part of why its taught in every 101 class. Interpreted languages are easier to debug and figure out whats going wrong because it crashes which something goes wrong. Compiled languages will not compile in many of these cases. For someone used to programming its fine since I prefer fixing errors at compile time since you can see all of them.

>> No.1423424

>>1423421
I think I am going to change "Great book" to "one of the best first programming books you can get, if not the best." You make it through it and do all the exercises, questions and drills, you will be in good shape.

>> No.1423426

>>1423423
>C++ is compiled which makes it a nightmare for beginners

Nah, if OP has a good book that teaches debugging from the start all is well. I think the problem that most beginners have with compiled languages is that many books and tutorials are written for programmers who already know how to debug, just need to learn the language, not how to program.

>> No.1423428

>>1423426
Its a world apart from debugging with python. Python is also easier to use for smaller programs as well as the fact that you dont have to deal with types. Being able to cram everything into a generic list is a a huge part of why python is preferred for algorithm testing instead of a compiled language.

>> No.1423431

>>1423428
It is easier to use for some types of small applications, pain in the ass for other types of small applications. You lack the logic of a programmer but have the defensiveness of something who knows some python.

Where you start should be determined by where your interests in programing lie, not some arbitrary idea of easy, e.g. if your interests are in microprocessors starting with python would be asinine.

>> No.1423434

>>1423431
Completely disagree. Understanding how to program on a fundamental level will guide you through any language. Honestly after master functional languages the differences between languages dramatically decreases because you understand how to implement everything at a fairly low level.
>You lack the logic of a programmer
Mate Im in grad school working on AI. I have a lot of experience and have taught a lot of people how to program. Seeing people try to jump into their interest (usually game dev) is how they burn out early.

>> No.1423435

>>1414161
CS50 is the beez knee.
You can find it on EDX
CS50s teaching style is amazing
I'm a software engineer btw

>> No.1423437

>>1423434
>Mate Im in grad school working on AI.
>Python is also easier to use for smaller programs
I would expect a grad student working on AI to know that to be a blatantly false statement.

>> No.1423472

>>1423437
You can pick python as a scripting language for your shell scripts in linux.

>> No.1423635

>>1423437
Try making hello world in Python, then in C++ and see which one is easier.

>> No.1423667

>>1414890
>your autistic fixation on design patterns.
Palpable irony.
>Yeah, wherever you "work", I want to have absolutely nothing to do with it
Don't worry, I won't hire you.

>> No.1423795

>>1423437
Tensor Flow is fastest growing repo on github if I'm not mistaken, also most people working on AI use scripting languages like python, octave, R, for ease of use.

>> No.1423812

>>1414158
Right off the bat, just say fuck the books and start writing useful programs. Books are alright but just learning the shit as you need it (and you'll know when you need it) will get you there fast and be less of a bore. Every language is shit and you'll never be happy with any of them, so just go for one that has a lot of traction in what you're trying to do. C is good for embedded/HPC/etc, C# or Java for CRUD/business stuff, PHP/JavaScript for webdev (fair warning that modern webdev is needlessly complicated, but you might enjoy it), and so on.

My number two tip is to learn about your fucking tools. Not doing this is especially prevalent among college-educated programmers and it'll reduce your productivity to a tenth of that of a mouthbreather who understands what he has available to him. Using debuggers, profilers, version control (usually Git or SVN), and a deep understanding of your text editor/IDE is about 50% of what it takes to really let it rip.

Phase 3 is knowing when you're doing work you shouldn't be. Java, Visual C#, Qt (C++), manufacturer-provided libraries (embedded C/assembly), and the like let you skip the bullshit and get right to the important bits, despite their shortcomings (and trust me, there's plenty). You outright don't have what it takes to drill down to the root of the problems that those things solve when you're starting out, so fight that battle only when you (inevitably) have to and you might have the good fortune of being ready when that day comes.

Finally, if and when this becomes a central part of your life, don't let other people's bad choices take your love of the game from you. Most code, tooling, and the platforms they run on are rancid shitheaps all the way down. Find either the passion to improve yourself and the environment you deal in, or the rancor that will drive you to eliminate everything you hate about the field; anything in between is apathy, and one day it will get to you.

>> No.1423819

>>1423812
One final note; shamelessly Google everything. The list of languages/libraries you can hold the entirety of in your head is extremely AND do meaningful work in is extremely short. The creators foresaw that and (hopefully) have created documentation to address that issue, turning many problems into a matter of you figuring out what the fuck you're even trying to do and then just Googling his to implement it.

>> No.1423860
File: 73 KB, 607x402, ae44anfaxzmy.jpg [View same] [iqdb] [saucenao] [google]
1423860

>>1414158
Oh hi there brother

>> No.1423901

Jesus fuck OP, did you even consider that programming is a huge fails, and asking where to start with learning without any further context is kind of like saying "I want to make something out of wood, where do I start" you start by figuring out what the fuck you want to do with your life.

>> No.1423906

All tradesmen want to be programmers and all programmers want to be tradesmen