WrongPlanet.net
WP Members: > 75,000



Aspie Affection

New Today: 11
New Yesterday: 34

Learning Computers And Science? Previous  1, 2, 3, 4  Next  
Post new topic   Reply to topic    Wrong Planet Autism Forum Index -> Computers, Math, Science, and Technology     
ruveyn
Phoenix
Phoenix


Joined: Sep 22, 2008
Age: 76
Posts: 29706
Location: New Jersey

PostPosted: Mon May 21, 2012 1:27 am    Post subject: Reply with quote

Keniichi wrote:
LookTwice wrote:
Can you give us an example of your how/why-questions? I think this would help narrow down what you need to look at.
My impression is that you should first look at an introductory book / class about how computers work. Maybe take a look at a book like
"Computer Systems: A Programmer's Perspective" by Randal E. Bryant, or at online courses like

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/
or
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/

like for instance when someone types a sentence the computer goes through its binary phase and eventually winds up with what we see as normal text. Its the same for commands. I want to understand that process?


There are two ways you can do that. Way 1. Look at the low level code for text processing written in machine language or virtual machine language. Not recommended. Inferring the logic from the code can be difficult and frustrating. Way 2. Look at a detailed algorithm for text processing. This will give you logic at the character level plus an logical operations that are done.

ruveyn
Back to top
View user's profile Send private message
LookTwice
Sea Gull
Sea Gull


Joined: Oct 31, 2011
Posts: 229

PostPosted: Mon May 21, 2012 6:52 am    Post subject: Reply with quote

Keniichi wrote:

like for instance when someone types a sentence the computer goes through its binary phase and eventually winds up with what we see as normal text. Its the same for commands. I want to understand that process?


Why do you want to know this and what do you want to be able to do with the knowledge?

The problem is that there is a number of systems involved and you don't necessarily need to know the details of all the systems to work with one of the others. For example, most software developers don't know much about how computer hardware works (and they don't really need to).

Roughly, there are these four levels that build on each other:
1) Hardware (keyboard and other periphery, mainboard, CPU, memory ...)
2) BIOS (sort of an abstraction layer between Hardware and operating system)
3) Operating system (e.g. Windows or Linux)
4) Application software (e.g. Word or Firefox)

Your question touches on all of these subsystems, so you might need to know:
- how does your keyboard register key presses, how does it send it to the computer (e.g. USB), how does the mainboard register the keypress, how does the CPU work, how does the display work? (if you're interested in hardware)
- how does the operating system handle key presses? (if you want to know about the OS)
- how does an application process input, how do I write source code to handle input? (if you want to know about software development)

You can take any of these topics and will find there is a lot of complexity there, the deeper you go, the more details there are to know about.
Back to top
View user's profile Send private message
Keniichi
Phoenix
Phoenix


Joined: Jul 24, 2011
Posts: 565
Location: Spokane, WA

PostPosted: Mon May 21, 2012 11:23 pm    Post subject: Reply with quote

LookTwice wrote:
Keniichi wrote:

like for instance when someone types a sentence the computer goes through its binary phase and eventually winds up with what we see as normal text. Its the same for commands. I want to understand that process?


Why do you want to know this and what do you want to be able to do with the knowledge?

The problem is that there is a number of systems involved and you don't necessarily need to know the details of all the systems to work with one of the others. For example, most software developers don't know much about how computer hardware works (and they don't really need to).

Roughly, there are these four levels that build on each other:
1) Hardware (keyboard and other periphery, mainboard, CPU, memory ...)
2) BIOS (sort of an abstraction layer between Hardware and operating system)
3) Operating system (e.g. Windows or Linux)
4) Application software (e.g. Word or Firefox)

Your question touches on all of these subsystems, so you might need to know:
- how does your keyboard register key presses, how does it send it to the computer (e.g. USB), how does the mainboard register the keypress, how does the CPU work, how does the display work? (if you're interested in hardware)
- how does the operating system handle key presses? (if you want to know about the OS)
- how does an application process input, how do I write source code to handle input? (if you want to know about software development)

You can take any of these topics and will find there is a lot of complexity there, the deeper you go, the more details there are to know about.

To be honest its just kind of my personality to want to know why and how things work.
_________________
Keniichi
Back to top
View user's profile Send private message
ouinon
chemical reaction
Supporting Member


Joined: Jul 11, 2007
Posts: 6403
Location: Europe

PostPosted: Sat Jun 02, 2012 4:18 pm    Post subject: Reply with quote

Keniichi wrote:
To be honest its just kind of my personality to want to know why and how things work.

I so identify with this.

I have just started learning Python, with my nearly 13 year old son, and we are also doing some reading around "Computer Science" ... ( lots of Wiki and "How Stuff Works" for the moment :lol ).

.. because it just reached that point, after several years of my using the net, and several years of my son playing video games, and creating/designing his own on paper including all the myriad complex stats/values for the gameplay in them, and joining game creation sites/MMORPGs like Atmosphir and Sploder etc, and trying and failing to understand how to use the Construction Kits that came with Crysis, Morrowind, etc ...

... if there was one main burning crucial reason why my son should continue home-un-schooling ( apart from the fact that it takes less than 20 hours a week to cover "school-subjects" for the end of year "control/tests", rather than the 40+ hours in/at/on school/college plus homework ), then it had to be his learning at least one programming language and about how computers work, ( because game-creation is pretty much all that interests him ) ... and so I would have to find out too!!! :lol ...

And the Python is coming along nicely, ( we're following a book bought from Amazon and referring to a couple of free online Python tutorials at same time for back-up/different "models" of explanation ) ... and we're picking up some info about operating systems, and motherboards, and RAM, and some history about it all, punch tapes/cards, ancient calculating machines, bits/bytes and the holes in the punch cards etc etc etc ...

... but we too still don't understand how holes in a punch card or zeros and ones are turned into programming language and vice-versa.

We have read a bit about ALGOL and the way programming language was broken up into language to the user, language to the computer, and reference language, etc ... and are beginning to see what syntax is about etc ... BUT I've begun to feel frustrated that the Python language tutorials don't explain or include the programming for "print", or "input" or "int" or all the other "functions" etc, all the various "sort-of-modules" like that, which we keep "calling"/typing/"paste"-ing into programming statements ... .

What is the actual *program* for "print" for instance ... and what are the programs for all the individual statements which make up *those* "lesser/lower" programs, and the programs behind those and and ... ??? How did the first ever program start? What *was* the first ever program? How many lines was it? Did it consist simply and solely of lots of 0's and 1's? What did it 'program"/make the computer do? ...

I realise that the first program(s) might in a sense simply be a circuit board ... with a string/sequence of electrical logic gates ... but would like to read/see an example of the first bit of *language* based on that? Smile ... How do the *languages"/codes connect up with the circuit board etc?

Confused Confused Confused Smile


Last edited by ouinon on Sun Jun 03, 2012 1:15 am; edited 1 time in total
Back to top
View user's profile Send private message
LookTwice
Sea Gull
Sea Gull


Joined: Oct 31, 2011
Posts: 229

PostPosted: Sat Jun 02, 2012 5:57 pm    Post subject: Reply with quote

ouinon wrote:

What is the actual *program* for "print" for instance ... and what are the programs for all the individual statements which make up *those* "lesser/lower" programs, and the programs behind those and and ... ??? How did the first ever program start? What *was* the first ever program? How many lines was it? Did it consist simply and solely of lots of 0's and 1's? What did it 'program"/make the computer do? ...

I realise that the first program(s) might in a sense simply be a circuit board ... with a string/sequence of electrical logic gates ... but would like to read/see an example of the first bit of *language* based on that? Smile ... How do the *languages"/codes connect up with the circuit board etc?

Confused Confused Confused Smile
.


http://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/printf.c;h=4c8f3a2a0c38ab27a2eed4d2ff3b804980aa8f9f;hb=3321010338384ecdc6633a8b032bb0ed6aa9b19a
http://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/vfprintf.c;h=fc370e8cbc4e9652a2ed377b1c6f2324f15b1bf9;hb=3321010338384ecdc6633a8b032bb0ed6aa9b19a
http://hostilefork.com/2010/03/14/where-the-printf-rubber-meets-the-road/

The connection between the logical gates and this code is a translation from C to machine language (which are binary 32 bit or 64 bit numbers that can be directly interpreted by the CPU, e.g. adding two numbers that are held in registers), which is done by the compiler.
Back to top
View user's profile Send private message
Shorttail
Blue Jay
Blue Jay


Joined: Feb 04, 2012
Age: 27
Posts: 94
Location: Aarhus, Denmark

PostPosted: Sat Jun 02, 2012 7:31 pm    Post subject: Reply with quote

Keniichi wrote:
As for looking up Scheme that I will do, but should I wait till I find assembly programs? What are their assembly names and where can I download them?

To be honest, I think you should start with an imperative programming language before anything else. It's not that assembly languages are bad, after all everything was written in them not too long ago, but the scope of what you can learn to do without serious dedication is rather limited compared to a high level language. I had a program once that emulated a stack and ram where it was possible to write short and simple programs with the most basic instructions. I can't recall its name though.
Imperative programming languages can be translated to assembly code rather easily, so seeing the relation between the code written and the instructions required is pretty linear (for very simple programs).

Here's a link to a an article about IJVM, which was made by the author of Structured Computer Organization. http://en.wikipedia.org/wiki/IJVM
At the bottom there are several links to IJVM simulators. IJVM stands for Integer Java Virtual Machine, which is a stripped down version of the JVM. It has much fewer instructions, but it can be used to create simple programs. It's not in actual use anywhere, but it might be a slightly less harsh intro to assembly language than starting with IA-32, which is Intel's 32 bit instruction set. It will probably take quite a bit of googling commands before you're able to get IA-32 to run, and a lot more to write code that works, but it's worth it if you want to understand.

In Tannenbaum's book there's also a decent introduction to micro assembly language, which is what takes care of executing the instructions. You likely won't ever have to write micro programs, but understanding them lets you know how much time the individual instructions take. There are several processor architectures that are purely fictional, but provide the basic of how numbers are passed around in the control unit, when things are calculated, and how the control unit communicates with the RAM. Real life processors such as Intel or AMD's are vastly more complicated, and I don't think it's possible to write your own micro code for them without hacks that don't just involve software (though of course I could be wrong).

Also, while you're at it, you might want to take a look at binary logic. I'm sure there are lots of emulators for that, if not then you can do most things in Minecraft. The logic gates are what make things happen at the lowest level of architecture. The arithmetic logic unit (ALU), the pipelines for moving stuff around, the RAM, the registers, the micro code executer, everything is run by solid state logic units made from silicon transistors.


...but yeah, start with basic high level programming and work downward. High level languages were invented for a reason. It will give you ideas of how calculations should be made and teach you how to think when it comes to problem solving. After that you can work your way down.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Keniichi
Phoenix
Phoenix


Joined: Jul 24, 2011
Posts: 565
Location: Spokane, WA

PostPosted: Sat Jun 02, 2012 10:46 pm    Post subject: Reply with quote

Thanks you all for the replies and information and such. Im trying some basic assembly language and somce C. Im starting to like some of it however I still struggle with applying the math parts. I get the definitions like I always have with math I just have trouble applying them. I seem to make alot of mistakes. Is this common with someone with NVLD(a horrible visual spatial ability compared to most aspies who dont have this issue. repeat MOST).
A bit more help would be needed with the math parts to programming(like integers)
_________________
Keniichi
Back to top
View user's profile Send private message
LookTwice
Sea Gull
Sea Gull


Joined: Oct 31, 2011
Posts: 229

PostPosted: Sat Jun 02, 2012 11:37 pm    Post subject: Reply with quote

Please try to ask specific questions. It's not clear what you mean by "math parts to programming". Integers are just a data type that you can declare variables with.
Back to top
View user's profile Send private message
Keniichi
Phoenix
Phoenix


Joined: Jul 24, 2011
Posts: 565
Location: Spokane, WA

PostPosted: Sat Jun 02, 2012 11:41 pm    Post subject: Reply with quote

LookTwice wrote:
Please try to ask specific questions. It's not clear what you mean by "math parts to programming". Integers are just a data type that you can declare variables with.

Im not good at applying math I make mistakes same with programming. If you test me mentally or ask me what the words mean Ill be able to answer a 100 percent but I cant seem to get the answers and applying the theory right down on paper. I make mistakes even though in my head the answers right. Get what Im saying?
This includes computers, science and math. All 3 are related.
_________________
Keniichi
Back to top
View user's profile Send private message
LookTwice
Sea Gull
Sea Gull


Joined: Oct 31, 2011
Posts: 229

PostPosted: Sat Jun 02, 2012 11:56 pm    Post subject: Reply with quote

I think I understand what you mean, but to help you we need to know exactly where the problem lies. Your description is too generic. Try giving an example of something you want to solve that gives you trouble.
Back to top
View user's profile Send private message
Keniichi
Phoenix
Phoenix


Joined: Jul 24, 2011
Posts: 565
Location: Spokane, WA

PostPosted: Sun Jun 03, 2012 12:42 am    Post subject: Reply with quote

LookTwice wrote:
I think I understand what you mean, but to help you we need to know exactly where the problem lies. Your description is too generic. Try giving an example of something you want to solve that gives you trouble.

Applying Math specifically to integers and such things.
_________________
Keniichi
Back to top
View user's profile Send private message
zxy3cpn
Phoenix
Phoenix


Joined: May 08, 2012
Age: 28
Posts: 934
Location: London, UK

PostPosted: Sun Jun 03, 2012 2:05 am    Post subject: Reply with quote

Keniichi wrote:
Applying Math specifically to integers and such things.


Can you give a more detailed explanation please, as it's not clear what you mean. Integers are (whole) numbers and presumably you know how to, e.g. add or subtract them. If what you're asking is how, for example, to solve equations in a program, you want to learn about "numerical methods". The book Numerical Recipes is a standard text on that sort of stuff and you can find older editions available for free on their website http://nr.com.
_________________
If my username is annoying to type, shorten it (e.g. z3n)!


Last edited by zxy3cpn on Sun Jun 03, 2012 12:40 pm; edited 1 time in total
Back to top
View user's profile Send private message
ouinon
chemical reaction
Supporting Member


Joined: Jul 11, 2007
Posts: 6403
Location: Europe

PostPosted: Sun Jun 03, 2012 4:45 am    Post subject: Reply with quote

shorttail wrote:
In Tannenbaum's book there's also a decent introduction to micro assembly language, which is what takes care of executing the instructions. ... Also, while you're at it, you might want to take a look at binary logic. I'm sure there are lots of emulators for that ... . The logic gates are what make things happen at the lowest level of architecture. The arithmetic logic unit (ALU), the pipelines for moving stuff around, the RAM, the registers, the micro code executer, everything is run by solid state logic units made from silicon transistors.

Very Happy Thank you very much for that ref; I have just ordered Tanenbaum's book "Structured Computer Organisation" from Amazon, ( not the most recent edition, it's way too expensive for me, but it looks as if the best/most important parts are the same in the older version anyway ), because it seems to be a brilliantly clear explanation/description/analysis of the fundamental functioning of a computer. Smile

And have just been reading a wee bit about logic gates, binary etc. Very interesting and helpful, even if is still mostly abstract for me. Smile

LookTwice wrote:
... Links to prog docs re. "printf" statements etc and a blog piece on the subj ..

Thank you for that. Smile I can't follow the programming language very well but it was weird and fascinating to see how complicated, most of all how multilayered/multi-nested, such apparently "basic" instructions are. ... Have been reading, in excerpt from Tanenbaum and on Wiki, about the many various layers of language involved, the number of translations/interpretations between a high-level language ( like Python, or C++ ), and Machine language, even Assembly language. Wow!
.
Back to top
View user's profile Send private message
slanecek
Emu Egg
Emu Egg


Joined: Mar 09, 2012
Age: 24
Posts: 5
Location: Prague, Czech Republic

PostPosted: Sun Jun 03, 2012 3:29 pm    Post subject: Reply with quote

Learn Java. It is a simple and probably the most useful programming language nowadays. Don't learn C++, Objective-C or C, these languages are too "deep level" and you really would be frustrated. I know it.

Edit: Other simple languages are Python, Ruby and C#, but as I said - Java is the most useful language, it probably has a 50% share on the market. And some languages are "more math" than others. For an example Haskell is an academic math language, but Java is rather more engineering than math language. You create in Java, you don't do math.
Back to top
View user's profile Send private message
Burzum
Indeed
Phoenix


Joined: Apr 27, 2011
Posts: 1205

PostPosted: Mon Jun 04, 2012 8:12 am    Post subject: Reply with quote

slanecek wrote:
Don't learn C++, Objective-C or C, these languages are too "deep level" and you really would be frustrated. I know it.

And by deep level you mean low level.

I could be wrong, but as far as I know Objective-C is not particularly low level.
Back to top
View user's profile Send private message
Post new topic   Reply to topic    Wrong Planet Autism Forum Index -> Computers, Math, Science, and Technology   
Previous  1, 2, 3, 4  Next  

 
Read more Articles on Wrong Planet



Wrong Planet is a Registered Trademark.
Copyright 2004-2013, Wrong Planet, LLC and Alex Plank. Alex does public speaking for Autism.

Advertise on Wrong Planet

Alex Hotchalk / Glam 

Alex Plank  Aspie Affection 

Terms of Service - You must read this as a user of Wrong Planet | Privacy Policy

Subscribe: RSS Feed  Wrong Planet News  Wrong Planet Forums




fine art