Blueprint for computer Programming technology

Source: Internet
Author: User
Tags color gamut

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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.