编程知识点

28.多核编程

所以简单地认为多核编程和以前的多任务编程或并行计算等同的话是不切实际的,以前的多任务下的编程思想放到多核编程上不一定行得通。

http://baike.1688.com/doc/view-d4525438.html

 

RedMonk 发布了 2014年1月份的编程语言排行榜,RedMonk 的排行方法跟 TIOBE 完全不同。现在的 RedMonk 通过包括 Github 以及 Stackoverflow 网站的热度进行排序,得出 2014年1月份排行如下:

编程语言排行榜

http://www.tiobe.com/index.php/content/company/Home.html

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引 擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

http://spectrum.ieee.org/blog/automaton/

IEEE Spectrum推出了一个最流行的编程语言排行榜。排行榜筛选了12项指标,综合了10个来源(含IEEE Xplore、Google、GitHub)的数据,最终评选出了下面这个排行榜(满分100,得分越高排名越靠前)。

IEEE Spectrum通过跟踪Google搜索和趋势、社交网站如Stack Overflow、Twitter、Reddit和Hacker News上的相关讨论,GitHub上的项目,以及工作招聘等信息,分析了49种编程语言的流行度,公布了它的2014年编程语言排行榜: 无论是Web、还是移动、企业级和嵌入式,Java都是最流行的语言。Web类别的最流行语言是:Java、Python、C#、PHP、 Javascript、Ruby、PERL、HTML、Scala和Go;移动类别是:Java、C、C++、Python、C#、 Javascript、Objective-C、Scala、Delphi、Scheme和Actionscript。综合排名:Java、C、C++、 Python、C#、PHP、Javascript、Ruby、R和MATLAB。

按照类型排名,各类主要编程语言的排行榜分别是:
编译型语言:
1、 Java(总排名No.1)
2、 C(No.2)
3、 C++(No.3)
4、 C#(No.4)
5、 Objective-C(No.16)
解释型语言
1、 Python(No.5)
2、 JavaScript(No.6)
3、 PHP(No.7)
4、 Ruby(No.8)
5、 Perl(No.11)
6、 HTML(No.12)
数据语言
1、 SQL(No.9)
2、 MATLAB(No.10)
3、 R(No.13)
Michael McLaughlin提出了自己的建议:

开发商业软件,推荐:Java, C++, C#, and AIDE – Android IDE (适用于Java和C++源码)
OS X and iOS开发:Objective-C
开发工具:C、C++与Python
Web 开发:Python、PHP、Ruby与Perl
数据分析:SQL、MATLAB和R

 

C 语言预处理指令

A)
预处理是C 语言的一部分吗?
B)
包含“#”号的都是预处理吗?
C)
预处理指令后面都不需要加“;”号吗?

另外ANSI 标准C 还定义了如下几个宏:

  1. _LINE_ 表示正在编译的文件的行号
  2. _FILE_ 表示正在编译的文件的名字
  3. _DATE_ 表示编译时刻的日期字符串,例如: "25 Dec 2007"
  4. _TIME_ 表示编译时刻的时间字符串,例如: "12:30:55"
  5. _STDC_ 判断该文件是不是定义成标准C 程序

如果编译器不是标准的,则可能仅支持以上宏的一部分,或根本不支持。当然编译器也有可能还提供其它预定义的宏名。注意:宏名的书写由标识符与两边各二条下划线构成。

ANSI 标准定义的C 语言预处理指令:

编程知识点_第1张图片
编程知识点_第2张图片

C 语言包含的数据类型如下图所示:

编程知识点_第3张图片

 

C的类型修饰符

unsigend 和signed 意思是有符号和无符号型

const 常量

void 的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据。
void 几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void 变量,

void 真正发挥的作用在于:
    对函数返回的限定;
    对函数参数的限定。

C程序  http://see.xidian.edu.cn/cpp/html/201.html  C语言中文网

printf命令模仿C程序库(library)里的printf()库例程(库函数)(library routine)。它几乎复制了
该函数的所有功能。不过在Shell层级的版本上,会有些差异。由于printf的行为是由POSIX
标准所定义,因此使用printf的脚本比使用echo移植性好。

当在源程序中使用到库函数printf时,先要用include命令将( )头文件包含进来。
(A)stdio.h (B)string.h (C)math.h (D)stdlib.h
Linux中程序如何调用printf等C库函数?
另外程序被加载时,load程序如何链接libc库中的printf函数呢
printf函数是在加载时动态链接libc.so库进行调用的

我知道printf的函数原型是在stdio.h这个文件里的,
printf这函数具体的代码是在哪里呢?C的标准库函数
glibc是GUN的C语言库函数,
是不是说所有的C语言的库函数都在这个glibc里面,在linux系统里,安装了glibc就相当于把glibc的源代码编译了,编译之后就应该是二进制文件
而stdio.h这个头文件里面有printf等有关输入输出的库函数的原型。
所有的c标准库,都被glibc实现了。下glibc代码,用grep ,cscope, ctags 找,都行。
find / -name "*.c" | xargs grep "printf"

[root@localhost ~]# ldd /bin/grep
        linux-vdso.so.1 =>  (0x00007fffe89ff000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003b35000000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b29000000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b28800000)

echo 'export JAVA_HOME=/usr/local/jdk1.6' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib

1.调用格式为  printf("<格式化字符串>", <参量表>);
  其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。

2.格式化字符

%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
说明:
(1). 可以在"%"和字母之间插进数字表示最大场宽。 例如: %3d 表示输出3位整型数, 不够3位右对齐。 %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。%8s 表示输出8个字符的字符串, 不够8个字符右对齐。 如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。 但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出; 若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。另外, 若想在输出值前加一些0, 就应在场宽项前加个0。 例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。 例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。例如: %ld 表示输出long整数, %lf 表示输出double浮点数。
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐。例如: %-7d 表示输出7位整数左对齐,%-10s 表示输出10个字符左对齐。

3. 一些特殊规定字符
\n换行
\f清屏并换页
\r回车
\t Tab符
\xhh表示一个ASCII码用16进表示,
其中hh是1到2个16进制数

java程序,java编程

对java程序员来说,ant(ant的build.xml)与maven(pom.xml)是更为常用的工具

对linux程序员来说,make是更为常用的工具
在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。

 

初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

rpc程序,rpc编程  http://blog.chinaunix.net/uid-1724205-id-2813082.html  sun rpc编程简介

一、 概述
  在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码,也即其主程序和过程之间的运行关系是本地调用关系。因此这种结构在网络日益发展的今天已无法适应实际需求。总所周知,传统过程调用模式无法充分利用网络上其他主机的资源(如CPU、Memory等),也无法提高代码在实体间的共享程度,使得主机资源大量浪费。
  而本文要介绍的RPC编程,正是很好地解决了传统过程所存在的一系列弊端。通过RPC我们可以充分利用非共享内存的多处理器环境(例如通过局域汪连接得多台工作站),这样可以简便地将你的应用分布在多台工作站上,应用程序就像运行在一个多处理器的计算机上一样。你可以方便的实现过程代码共享,提高系统资源的利用率,也可以将以大量数值处理的操作放在处理能力较强的系统上运行,从而减轻前端机的负担。

以下我将通过实例向读者介绍通过简单层RPC的实现方法。通常在此过程中我们将使用RPC协议编译工具-Rpcgen。Rpcgen 工具用来生成远程程序接口模块,它将以RPC语言书写的源代码进行编译,Rpc 语言在结构和语法上同C语言相似。由Rpcgen 编译生成的C源程序可以直接用C编译器进行编译,因此整个编译工作将分为两个部分。Rpcgen的源程序以.x结尾,通过其编译将生成如下文件:
  a) 一个头文件(.h)包括服务器和客户端程序变量、常量、类型等说明。
  b) 一系列的XDR例程,它可以对头文件中定义的数据类型进行处理。
  c) 一个Server 端的标准程序框架。
  d) 一个Client 端的标准程序框架。

python程序,python编程

Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
    Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
    Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
    Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
    Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

    为什么要装easy_install?
    正常情况下,我们要给Python安装第三方的扩展包,我们必须下载压缩包,解压缩到一个目录,然后命令行或者终端打开这个目录,然后执行
    python setup.py install
    来进行安装。
    这样是不是很繁琐呢?如果我们直接命令行执行
    easy_install Twisted
    就把最新版的Twisted包装上去了,是不是很爽呢?
    所以easy_install就是为了我们安装第三方扩展包更容易
    怎么装easy_install?
    首先下载easy_install的安装包,下载地址:
    http://pypi.python.org/pypi/setuptools
    下载自己对应的版本,windows上面直接运行exe安装就可以了
    linux上面可以直接运行
    sh setuptools-0.6c9-py2.4.egg
    安装完成后,easy_install会被自动复制到bin目录下,也就是我们的PATH路径下,所以我们在终端中可以直接运行easy_install命令了
    easy_install Twisted
    测试一下,看是否成功
    常见的问题
    当在安装包的时候,不管是手动安装 还是 easy_install,如果提示错误:找不到python.h文件,那说明我们安装的python不是开发版,在ubuntu下面的解决办法如下:
    sudo apt-get install python-2.7-dev
    安装对应python版本的dev就可以了。

 

你可能感兴趣的:(编程)