Directory:
0 Hardware
1 Basic Concepts
2 Operating system
3 Programming techniques
4 Software engineering
5 Efficient programmers
6 Programming practices
Their main focus on 2 aspects, the hardware direction of
Single-chip microcomputer (how to interact with various hardware peripherals)and software direction.
computer Graphics (focusing on the generation of graphic images)Others also care about Linux, the Web. Starting from 0:)
0 HardwareWhat do we need to know about a computer hardware? The following is a list (chain reception finishing).
Module |
Hardware |
Programming aspects |
Interface mode |
Measurement metrics |
Research direction |
Processor |
Pc,notebook,phone |
Thread |
Intel: Socket 478, LGA775,LGA 1150 AMD: socket 939 socket FM2, etc. |
Multi-core/frequency Process |
Programming Basics |
Memory |
Memory |
Variable , address |
Ddr3/4 |
Bandwidth/Latency |
Programming Basics |
Store |
HDD/ u disk/sd |
how files are read : Synchronous , asynchronous |
(ATA) IDE,SATA3 (Serial ATA) USB |
Bandwidth Capacity |
Database |
Internet |
Nic /router /network cable |
Socket |
|
Bandwidth , Latency |
Network |
Voice |
Sound |
|
|
|
|
Show |
GPU, graphics /monitor /printer |
Read/write Display window |
external: VGA,DVI,HDMI,DP; internal: AGP,PCI |
Resolution Color gamut Color Accuracy Response Time Visual angle Definition Brightness Contrast ratio Power Fever |
Computer graphics |
Mouse /Keyboard |
Keyboard , mouse |
Messages /Events /interrupts |
Usb,ps2 |
Resolution |
Programming Basics |
|
1 Basic ConceptsIn the process of hardware-to-software transition, or during the use of hardware, understanding the basic concepts is the most solid and difficult step. This part is in the knowledge collation-the basic concept. (Chain reception finishing), these concepts are linked to the hardware, the above linked to the software, play a connecting role. There is theory and practice behind each concept. Theory is unique, and practice can be obtained from different places, such as different libraries (GDI,OPENGL) can not get some knowledge of graphics, It can also be that different operating systems (WIN/LINUX/MAC) can get some knowledge of the process thread. WINDOWS/MFC/QT can get some knowledge of the message system. Win/mac/android/ios can get some knowledge of some graphical interfaces. * * Can get some knowledge of the network, * * can get some knowledge of the file system. These concepts are organized in the following categories:
C&cpp |
c: variable function class struct pointer array |
CPP: Object template virtual function constructor destructor overload inheritance encapsulation |
|
|
OS operating system/Browser terminology |
Process line subroutines Library Virtual Memory window event message stack heap memory map exception |
File System files Cache redirect Timer CONSOLESSH |
Browser Font Coding |
|
Gdi/opengl Graphic Academic language |
Ps: Transparent/Translucent Vector Animation Palette
|
GDI: bitmap (bitmap) brush (brush) Brush (pen) color path (path) region palette |
Opengl: Image Rendering Texture Lattice Resolution Masks |
|
QT Terminology |
Signal/Slot Mvc |
|
|
|
Internet |
TCP/IP Protocol port routing |
|
|
|
Software Engineering Terminology |
Waterfall model |
|
|
|
2 Operating systemA gradual understanding of the operating system is the foundation of our work. The most common operating systems on the planet are Windows and *nix (Linux,unix,mac OS), other mobile/embedded hardware operating systems Android, iOS, Wp,symbian,meego, Blackberry,webos. They may be different to the user, but the difference is not as big as it seems to the programmer (the lower the bottom). A) System usage/management/exploration tools Windows Common graphical Configuration tool or batch command to manage configuration operating system *nix below is a series of tools (command line based) to configure, explore system 1) How to manage software (update uninstall, build)? 2) How do I view hardware information? b) Automation language: Automation can be more efficient use of computer systems (operating systems) including Windows under the batch processing, *nix the following script
3 Programming Techniques
In order to use the above hardware, it is necessary to use programming techniques, that is, using the interface provided by the operating system to control the hardware.
A) Programming basics
This part of the programmer's personal accomplishment, may not be directly used for programming, but can be directly used for in-depth programming. Do not need to know exactly how to do it, but understand how the computer does something (one is mechanism, one is implementation details)
What are the basic concepts of process, file, thread, memory, timer, network, redirect, these are the tools that the computer provides to solve the problem
such as understanding the running process of the software
Like understanding the relationship between C and the assembly.
Like understanding how the script works
such as the format of an executable file (under Windows Pe,*nix under the Coff,mac under the Mech-o)
Like understanding how the operating system works
such as understanding the design pattern (which contains the practical, good programming guidelines)
How to handle a large number of objects efficiently and how to deal with animations
b) There are many kinds of programming language computer programming languages, the common basis is the system API, the principle is the function call, then the stack is saved, jump execution: General programming language C C + + VC C # java OBJC common scripting language Python browser scripting language JS, HTML, CSS, Where HTML focuses on structured document CSS focuses on the interface display, JS equivalent to the browser's scripting language, mainly to the browser control. System scripting language: batching, Shell and other NSIs that focus on program encapsulation there are 2 types of focus here: Focus on one aspect of the language and some libraries focus on a certain aspect of the intersection
attached: My programming language worldview:(2014/08/07 15:46)
in the world of Windows mixed with C # It has to be understood.
a serious programmer C C + + VC is also to understand it
Python also needs to know, across the Windows and Linux languages
Server Linux is a must to understand it
want to do the Web page JS HTML css must understand it
want to work efficiently, Windows batch, Linux shell also understand itUnder
Linux you have the nerve to say no VI?
want to do Android program, Java to understand it
do you want to do the iOS program, OBJC understand?
you asked me if I could only speak one language .
No, absolutely not!
In addition to speaking the language, I said the library? Mfc,.net,stl will not say, this is standard. Qt,opengl,directx,jquery,tornado, there is two times of every thing is a library.
you said that in fact, you have some contact, most of them with good, congratulations, in the programming of the road, you start to get started!c) Library (graphics, network, database, big data, etc.) library language comes with libraries and third-party library programming languages with libraries, such as the C standard Library, C + + STL,VC below the mfc,c#. Net Library, Python has a large number of libraries, there are a variety of language third-party libraries, Some libraries may work in several languages, such as: thread-focused pthread dedicated to the Web-focused interface of the Qt,win32 GUI focused on graphics: Dictectx,opengl,win32 GDI focuses on the scientific computing focus on the website backstage Tornado file System, database: Sql,mysql,hadhoop ... d) application type, implement Carrier. Why look at all the above things (development what) can be done to achieve a variety of functions desktop programs can do Web site can do desktop/Mobile client E) Basic aspects of work are often needed, regardless of which operating system, language, or even library, or even whatever development you do, the following will often be encountered
1 Network access
2 Compression Decompression
3 XML JSON INI
4 Database access
5 File access
6 Registry File
7 Interface (skin)
8 data structures, string handling
9 Image processing (2012/11/1-14:26)
4 Software Engineering
Use engineering to see how to make a software. is a summary of computer programming. How to better use the above things to complete a specific software (system), involving the following activities:
Requirements analysis and definition.
System Design
Programming
Writing Programs
Unit Test
Integration Testing
System Testing
System Delivery/Acceptance
Operation and Maintenance
A) Overall development process waterfall model iterative development Spiral Development Agile Development B) code editing Windows under the main use of the IDE (VS series) *nix Common VI and other series of text tools, CMAKE,GCC, such as compilation tool chain code writing specification c) code management Svngit D) Test technology black box test, white box test, gray box test code test product test Automation test
5 Efficient Programmers
1 shortcut keys include the system shortcut keys and some software-specific shortcut keys, the system is commonly used to remember, software-specific can be used when viewing 2 good tools 工欲善其事, its prerequisite. There are some other tools such as mspaint,everything and some programming-specific tools such as Spy + + Common software is a variety of tools, whether commonly used and access to the difficult and tool experience is very important. For example, although Notepad and must be a good text viewing tool, but on every Windows system will have, so the frequency of use is very high. In linux/ Mac These tools are usually brought into the system, Windows is generally a third-party (the most famous is systeminternal, has been acquired by Microsoft), but also a small part of their own, In addition, VisualStudio development tools also come with some. You can experience the similarities and differences between the programming implementation and the use of tools.
1) Text Tool
Notepad Edit View
notepad++
UltraEdit
Vim
HexEdit
beyondcompare Text comparison
Winmerge
SVN text version management tool
2) Programming/development Tools
vs Ide/qt/python/js
GNU toolchain: Ldd,objdump executable file Viewing tool
vs comes with tool: Dumpbin,spyxx can view Windows window/Message
Systeminternal Tool Collection: Procexp DebugView
depends static view run dependent
Stud_pe
3) Efficiency Time management tool
Totalcommand Quick Operation files
Everything Quick Search hard drive files
Youdao Notebook
Sogou Input Method
4) Web browsing
Chrome
Firefox
ie: Microsoft is said to abandon IE brand, step live,message,msn follow the footsteps
Sogou Browser
5) Audio and video image tools
Audition
Premiere
Photoshop bitmap
MSPaint system comes with a picture viewing tool
Font
svg is a standard
2D3D Model Tools
Illustrator Vector Map PostScript
11) Other
Fiddler read/write/monitor network card
Wireshark
Advanced Serial Port monitor (similar to syterminternal Portmon) read/write/monitor serial port
Disk Investigator (similar to Syterminternal's Diskview) HDD tool
Spacesniffer graphical display of hard disk files
6 Programming Practices (computer applications)
1)
2009.1-2010.7Start working with Win32 (c), MFC (+ +) 2)
2010.7-2012.12Contact with Qt,python,mac/ios (OBJECT-C) 3)
2013-2---Exposed to web client programming (JS,HTML/HTML5,CSS,), Web server Programming (c,python,java,php), and client-server interaction technology. Pay more attention to the field of computer image hardware and software
Above are some superficial thinking, hope to communicate-----------------------update Log------------------------------------------------------------------------2014/07/25 09:44 Create document 2015/02/05 11:11 Added 1 Basic Concepts section. 2015/03/26 16:50 Full-text wording fine tuning 2015/04/08 16:07 Modifying the computer hardware section for a list 2015/04/14 09:49 full text wording fine-tuning
Blueprint for computer Programming technology