How_to_program_from_ground_up

所属分类:视频捕捉采集剪辑
开发工具:kotlin
文件大小:0KB
下载次数:0
上传日期:2024-02-13 09:11:06
上 传 者sh-1993
说明:  关于从底层开始学习编程的视频系列的大纲
(Outline for the video series about learning to program from the bottom first)

文件列表:
.idea/
assets/
gradle/wrapper/
src/main/kotlin/
02-TheEssentialQuestion-WhatAreWeComputing.md
03-Hardware.md
04-DataStructures.md
05-Software.md
06-HighLevelLanguages.md
07-SoftwareDesign.md
08-StructuredProgramming.md
09-ClassOrientedProgramming.md
10-BackToObjectOrientedProgramming.md
11-FunctionalProgramming.md
12-ParallelProcessing.md
13-Conclusion.md
build.gradle.kts
gradle.properties
gradlew
gradlew.bat
img.png
mermaid_test.md
settings.gradle.kts

# How to Program From The Ground Up with Minimal BS - [Introduction](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/#introduction) - [The Essence of Computing](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/02-TheEssentialQuestion-WhatAreWeComputing) - [Hardware](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware) - Using Natural Phenomenon to Represent Human Information - [The Wire & the Light Bulb & the Battery](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-wire--the-battery) - [The Simple Switch](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-simple-switch) - [The Magnificent Magnet](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-magnificent-electromagnet) - [The Raucous Relay](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-raucous-relay) - [The Voracious Vacuum Tube](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-voracious-vacuum-tube) - [The Tiny Transistor](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-tiny-transistor) - [The Interchangeable Integrated Chip (IC)](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-interchangeable-integrated-chip-ic) - [The Mighty Microprocessor](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/03-Hardware#the-mighty-microprocessor) - [Data Structures](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures) - How Humans Represent Data in Binary in Computers - [Numbers](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#numbers) - [Characters](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#characters) - [Array](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#array) - [String](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#string) - [Pointer](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#pointer) - ["Data Structures"](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#data-structures) - [Stack](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#stack) - [Queue](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#queue) - [Linked List](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#linked-list) - [Map](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#map) - [Tree](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/04-DataStructures.md#tree) - [Software](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md) - [Machine Code](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#machine-code) - [Representation of Data in Computer Memory](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#representation-of-data) - [Binary Counting](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#binary-counting) - [Hexadecimal Counting](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#hexadecimal-counting) - [Standardized ASCII](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#standardized-ascii) - [The Minimum Components of a Computer System](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#minimum-components) - [The CPU/MPU](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#the-cpumpu) - [The Clock](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#the-clock) - [Program Counter](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#program-counter) - [Common Machine Language Opcodes](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#common-opcodes) - [Fetch-Decode-Execute Cycle of the CPU](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#fetch-decode-execute-cycle) - [Registers](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#registers) - [Arithmetic Logic Unit (ALU)](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#alu) - [Control Unit](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#control-unit) - [Assembly Language](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#assembly-language) - [Common Assembly Language Operations](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#common-assembly-operation) - [Variables](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#variables) - [Subroutines](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/05-Software.md#subroutines) - [High-Level Languages](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#high-level-languages) - [Programming Styles](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#programming-styles) - [Procedural Programming](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#procedural-programming) - [Problem: Abusing GOTO](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#problem-abusing-goto) - [Solution: Subroutines](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#solution-subroutines) - [Problem: Naive Solutions](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#problem-naive-solutions) - [Problem: Imperative Looping](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#problem-imperative-looping) - [Solution: Declaritive Looping](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/06-HighLevelLanguages.md#solution-declaritive-for-loop) - [Software Design](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/07-SoftwareDesign.md) - [Algorithms](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/07-SoftwareDesign.md#algorithms) - [Time Complexity](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/07-SoftwareDesign.md#time-complexity) - [Shorthand Guide & Sample Code](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/07-SoftwareDesign.md#time-complexity-example) - [Communicating Software Designs Visually](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/07-SoftwareDesign.md#communicating-software-designs) - [Structured Programming](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/08-StructuredProgramming.md) - [Scopes](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/08-StructuredProgramming.md#scopes) - [Types](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/08-StructuredProgramming.md#types) - [Class Oriented Programming](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md) - [COP Tried to Introduce a New Style of Programming, But Ended With Mixed Results](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#cop-tried-to-introduce) - [Encapsulation](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#encapsulation) - [Using Classes and Objects as "Name-Spaces/Scopes" Lead to Procedural-Style Code Implementations](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#using-classes-and-objects-as-name-spaces) - [Problems Arising from Abusing Static Methods and Attributes](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#problems-arising-from-abusing-static) - [Interfaces](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#interfaces) - [Inheritance](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#inheritance) - [Problems Arising from the Abuse of Inheritance](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#problems-arising-from-the-abuse-of-inheritance) - [Abstract Classes](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#abstract-classes) - [Polymorphism](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#polymorphism) - [Controlled Visibility of Variables and Methods](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#controlled-visibility) - [Allowing for "Multiple Inheritance" in C++ was a mistake, and it was removed from Java and C# for very good reasons](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/multiple-inheritance-removed) - [Design Patterns](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/09-ClassOrientedProgramming.md#design-patterns) - [Back-to-Object Oriented Programming](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/10-BackToObjectOrientedProgramming.md) - [Banned Patterns in BOOP](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/banned-patterns-in-boop) - [Why is Class-Oriented Programming (COP)](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/10-BackToObjectOrientedProgramming.md#why-is-cop-bad) - [Back-to Object Oriented Programming Example](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/10-BackToObjectOrientedProgramming.md#boop-example) - [Functional Programming](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/11-FunctionalProgramming.md) - ## Introduction - How to guide for budding software engineers who need a primer overview of software development concepts from the fundamentals of physical logic representation to high-level programming languages. - ### The goal is to have you - understand more the `why` and `how` of programming, not just the `what` and `where`. - This is my curated list of information to take you on a realistic and grounded journey of understanding the essential part of computing to create effective software. - There will be some technical details, but only enough to understand the fundamental principles, not to be an expert. - I cover the areas that I had difficulty understanding when I was learning to program. - This is more-or-less a historical walk through `WHY` things are the way they are in computing, and `HOW` they came to be that way. > I have since discovered that the majority of my confusion derived from how things were presented to me. > Instructors often completely misunderstood correct application and limits of metaphors and lacked real-world > experience of the things they were teaching. Many just repeated what they were taught without understanding. > When challenged about their knowledge, they would often become defensive and dismissive, and sometimes even hostile. > Many of the concepts are, in retrospect, full of needless jargon and unnecessary complexity. I now understand that > the complexity was often used to make the instructor seem more knowledgeable and to make the subject seem more > difficult than it actually is. > I would like to say at the outset that there is a TREMENDOUS number of technical-sounding words with all > referring to the same basic core ideas. I will do my best to be as consistent as possible, and also work to > point out the multiple definitions and reduce the jargon and clarify the core meanings and ideas. ## The Essence of Computing - People used to do all computing by hand, and now we use various machines to do the same thing, in a much faster and more reliable way. - When we use a machine to do computing, we are just using the machine to represent the problem and the solution in a different way. - The machine knows nothing about the problem. it's only following orders created by clever humans using boolean logic to represent the problem and its sequence of actions to solve it. - Each operation in the computer was once done by teams of people working in groups, logically delineated in nearly the same way as the computer's components are arranged. - There were specialized roles for each person, for example, the "storage" would be a set of filing cabinets and a clerk to store and retrieve them. - This is now done by the "hard drive" and the "file system" in the computer. - The arithmetic would be done by a person called a "calculator" who would perform the operations and record the results. - This is now done by the "Arithmetic Logic Unit" and stored in the "Registers" in the computer. ## SOME IMPORTANT ITEMS TO KEEP IN MIND - THERE IS NO MAGIC IN COMPUTING, ONLY _HUMAN_ CLEVERNESS, _HUMAN_ SYSTEMIC THINKING AND _HUMAN_ INGENUITY USED TO SOLVE _HUMAN_ PROBLEMS. - If you hear anyone say _"it's magic"_ or _"it's a black box"_ or _"it's kind of like a person,"_ they are: 1) Being lazy, 2) Or indicating it's not relevant at the moment, 3) Or (USUALLY) they don't understand the problem or the solution enough to explain it and become hand-wavy. - ### ITS ALWAYS JUST _HUMAN_ CLEVERNESS AND INGENUITY, THE IDEA OF REPRESENTING ONE THING AS ANOTHER, NOTHING MORE. - The machines CAN _NEVER_ UNDERSTAND the problem or the solution in the way humans conceive of the problem. - These machines are only following the logical operations that humans have carefully designed to represent the problem and a solution "space." There is no inherent "understanding" in the machine, and can never be. - The only way the machine would ever know the full human context of the problem (and the solution) is if the machine ACTUALLY was a human, and then it would be a _human_, and not a machine. - Mistaking the machine for having intelligence is known as "The Eliza Effect" and is a common mistake made by people who don't understand the limits of the machine's capabilities. - [Continue Reading - The Essential Question](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/02-TheEssentialQuestion-WhatAreWeComputing.md) - [Back to Index](https://github.com/realityexpander/How_to_program_from_ground_up/blob/master/README.md)

近期下载者

相关文件


收藏者