Page 2 of 4 [ 58 posts ]  Go to page Previous  1, 2, 3, 4  Next

LookTwice
Velociraptor
Velociraptor

User avatar

Joined: 30 Oct 2011
Age: 114
Gender: Male
Posts: 441
Location: Lost, somewhere

21 May 2012, 5:52 am

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.



Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

21 May 2012, 10:23 pm

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


ouinon
Supporting Member
Supporting Member

User avatar

Joined: 10 Jul 2007
Age: 62
Gender: Female
Posts: 5,939
Location: Europe

02 Jun 2012, 3:18 pm

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? :) ... How do the *languages"/codes connect up with the circuit board etc?

:? :? :? :)



Last edited by ouinon on 03 Jun 2012, 12:15 am, edited 1 time in total.

LookTwice
Velociraptor
Velociraptor

User avatar

Joined: 30 Oct 2011
Age: 114
Gender: Male
Posts: 441
Location: Lost, somewhere

02 Jun 2012, 4:57 pm

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? :) ... How do the *languages"/codes connect up with the circuit board etc?

:? :? :? :)
.


http://sourceware.org/git/?p=glibc.git; ... ed6aa9b19a
http://sourceware.org/git/?p=glibc.git; ... ed6aa9b19a
http://hostilefork.com/2010/03/14/where ... -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.



Shorttail
Blue Jay
Blue Jay

User avatar

Joined: 3 Feb 2012
Age: 40
Gender: Male
Posts: 95
Location: Aarhus, Denmark

02 Jun 2012, 6:31 pm

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.



Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

02 Jun 2012, 9:46 pm

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


LookTwice
Velociraptor
Velociraptor

User avatar

Joined: 30 Oct 2011
Age: 114
Gender: Male
Posts: 441
Location: Lost, somewhere

02 Jun 2012, 10:37 pm

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.



Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

02 Jun 2012, 10:41 pm

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


LookTwice
Velociraptor
Velociraptor

User avatar

Joined: 30 Oct 2011
Age: 114
Gender: Male
Posts: 441
Location: Lost, somewhere

02 Jun 2012, 10:56 pm

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.



Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

02 Jun 2012, 11:42 pm

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


zxy3cpn
Veteran
Veteran

User avatar

Joined: 7 May 2012
Age: 41
Gender: Male
Posts: 934
Location: London, UK

03 Jun 2012, 1:05 am

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 03 Jun 2012, 11:40 am, edited 1 time in total.

ouinon
Supporting Member
Supporting Member

User avatar

Joined: 10 Jul 2007
Age: 62
Gender: Female
Posts: 5,939
Location: Europe

03 Jun 2012, 3:45 am

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.

:D 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. :)

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. :)

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

Thank you for that. :) 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!
.



slanecek
Emu Egg
Emu Egg

User avatar

Joined: 8 Mar 2012
Age: 37
Gender: Male
Posts: 5
Location: Prague, Czech Republic

03 Jun 2012, 2:29 pm

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.



Burzum
Veteran
Veteran

User avatar

Joined: 26 Apr 2011
Age: 34
Gender: Male
Posts: 1,205

04 Jun 2012, 7:12 am

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.



Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

07 Jun 2012, 7:43 pm

ouinon wrote:
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? :) ... How do the *languages"/codes connect up with the circuit board etc?

:? :? :? :)

For some reason I only learn from and reallylike the Colleges Computer Sceince classes/books. I HAVE tried everything else and have generally gotten not very far, As I wrote Im not the best at Math, or antyhing visual Spatial. Ithink its because the books are more of demonstations and involve hands on works to explain whats going on?
Oh my! You sound just like me!


_________________
Keniichi


Keniichi
Veteran
Veteran

User avatar

Joined: 23 Jul 2011
Age: 34
Gender: Female
Posts: 617
Location: Spokane, WA

07 Jun 2012, 7:45 pm

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.

I like computer science classes at school, unfortuneately I cant afford the whole program(I get the joy of having sample classes as result of helping those who are disabled with life). I also seem to like networking and cisco and a tad bitof Assembly, unfortuenetaly I only seem to really get the computer science programs classes used in classes.(see my reply to ouinon)


_________________
Keniichi