‘壹’ C 语言和 Python,该从哪个入门编程
先说结论,建议C
首先你要看看自己是要干什么,学习X语言只有两个目的:
1,成为一名软狗。
2,成为一名伪软狗。
如果你要成为一名软狗,请学习C。因为C是一贫如洗的语言,C能给你最好的逻辑锻炼而不是给你个库你看看有什么功能。
如果你要成为一名伪软狗,请学习C。
为啥呢,笑,因为你连C都不会怎么装x啊。当然这不是重点。(逃
由于C的先天的单纯和面向过程的特性,以及略现死板的编码要求,都让人能够快速掌握编程思想。但是C要学到什么程度就见仁见智了。比如我要成为一个嵌入式程序员,我就必须对C的各种小库了如指掌,各种函数什么功能,指针怎么指来指去。还需要明确内存操作等相关问题。最后类似于用C来实现某些位运算啊I/O调用啊小破标志位动来动去啊。
但是我要成为一个工业生产程序员我就了解C的基本思想就行了,无需了解C中相对不容易调用的库,也不用太考虑指针和位运算。因为我的思路是要向面向对象甚至面向切面拓展的。
至于python,我也是很喜欢啊,最近刚刚入门。感觉好简洁啊,好欢乐啊,很多C#搞半天的玩意一会儿就写完了啊,站在了巨人肩膀上真是爽啊,前人栽树好乘凉啊!!
不过这都是我使用C=》C++(也就大学学了点)=》C#后的感觉。
要是我上来学的是python,我的感觉估计就是哎我去怎么怎么坑爹这语法,哎我去这个实现怎么这么费劲,哎我去缩进和逻辑怎么没关系。。。
先入为主的编程思想,很影响后续语言的学习的。
不过Python也很不错,可以相当快速度入门,急速做出东西。学习曲线比较平缓而且最重要的是比较有成就感。
总结一下吧:
如果你想要作为一个程序员生活下去,请以C入门,没错的。
如果你想要在小白面前一展谈资,请以C入门,妥妥的。
如果你想要迅速做出需要的东西,请怒学Python,学成了记得给我培训下。
如果你想要后续撬开面向对象或面向切面大门,请学C。
对Java等面向对象语言没兴趣就是想写代码,Python。
以上。
‘贰’ python和c哪个适合入门
Python和C语言先学哪个好?
其实这种纠结并不只是你有,还有800多万的小伙伴在陪你一起纠结。
让我来说,答案很简单:选你感兴趣的!我们都知道,兴趣是好老师,所以培养兴趣很重要。而如果你不确定自己对哪个语言更感兴趣,
那么可以参考下面的方案:
如果你想做技术,走技术路线,那毫无疑问先学C语言百利而无一害。
如果还不确定以后的路想怎么走,那无所谓先学Python还是C,随缘吧。
如果确定了不想走技术路线,那么请先从Python开始。
推荐学习《python教程》。
其实,从两种语言入门,各有各的好处。
从C语言开始入门的话,它的语法结构比较严谨,把C语言学透彻了,再学其他的语言就简单多了,可谓是一通全通。C语言是一种面向过
程的语言,而Python是一种面向对象的解释型计算机程序设计语言。先了解什么是面向过程,然后去了解什么是面向对象,这样学习更
有效率。
从Python入门,也有它的道理。Python入门程序比较简单,在前期也比C语言容易学一些。学习C语言就比较枯燥,很难迅速见到成效,
可能会摧毁你的学习积极性。先学习Python,虽然可能对底层实现方面了解比较模糊,但是这方面也可以等学完Python再补上。
当然,这个问题没有标准答案。最终,还是要靠你自己实践,才能知道什么最适合自己。
‘叁’ 只有C基础,学习Python还是Go,哪个入门更快
我建议python,参考资料多,入门快。go这个语言现在褒贬不一,未来可能会很好用,但是现在看起来不好说。
‘肆’ python和c应该先学哪个
先学C语言更好。
如果你是女生,又很多年没有干编程了,可能对技术开发都会有一定的陌生了,如果你学过C语言,那么你可以先试试重新写写C程序看看,不说写多难的。
Python中有像Numpy、Scipy这样的科学计算库,以及Matplotlib这样的数据呈现库,从做研究的角度来讲,Python有潜质成为你的一个得力工具。
‘伍’ python和c先学哪个
在知乎上看到这样一个话题:对于初学者而言Python和C先学哪个好?有人觉得应该从C语言开始入门,原因如下:(推荐学习:Python视频教程)
1、C语言是你上大学第一门接触的编程语言,可见它的重要性。
2、C语言是一种面向过程的语言,而Python是一种面向对象的解释型计算机程序设计语言。而你需要先了解什么是面向过程,然后去了解什么是面向对象。
3、C语言是基础,可以这样说,如果你把C语言学透彻了,那你学其他的语言就简单多了,可谓是一通全通。
也有人觉得应该从python开始入门,原因如下:
1、如果使用C入门编程,能更好地掌握编程基础,理解代码运行原理,但是学习c比较枯燥,很难迅速见到成效,可能会打击学习的积极性。
2、使用python见效快,但是因为大部分使用高级接口,所以对底层实现方面可能就比较模糊,但是也可等学完python之后再学习C去补上。
3、现在国外教初学者编程都换python了,C是偏低层的,细节多,不易学。学python,你现在想做的东西,用python都可以很快很方便的实现。
C语言程序设计是我们的专业基础课,但是C语言本身却是一个非常强大的工具,它是到目前为止最为广泛使用的工具。
而Python 是一种通用的脚本开发语言,比其他编程语言更加简单、易学,其面向对象特性甚至比Java、C#、.NET更加彻底,因此非常适合快速开发。
据Apache 2018 年度报告显示,从项目使用的代码语言的分布来看,Java 第一,占所有项目的 58%,第二位是 C,第三位是 Python,第四位和第五位是 C++ 和 Javascript,两者差距不大。
总结下来就是:学C语言难而python简单,但是先学C语言能更好打基础。毕竟,要做程序员,你不能只会一门语言,大多数程序员都需要会至少三门语言的。
其实对于初学者来说,那毫无疑问先学C语言百利而无一害。 如果还不确定以后的路想怎么走,那无所谓先学Python还是C,如果确定了不想走技术路线,那么请先从Python开始。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python和c先学哪个的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
‘陆’ Python和C哪个更好学
Python比C语言更好学。
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。Python极其容易上手,因为Python有极其简单的说明文档。
C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
(6)python和c哪个基础扩展阅读:
C语言特有特点:
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。
广泛性C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。
此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。
简洁性。9 类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。
结构完善。C语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显着优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。
Python特点:
解释性,运行程序的时候,连接、转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
可扩展性,如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
可嵌入性,可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
‘柒’ python和c哪个适合零基础的初学者
这是一个很难回答的问题,任何一方都有支持也有反对的,看你主要做什么吧,如果是用于特定领域的计算、控制、处理,用python会简单的多,如果你希望对计算机的内存、操作系统有更详细的了解,C是肯定免不了的。
‘捌’ c语言和python哪个好入门
从开始看Python到现在也有半个多月了,前后看了Python核心编程和Dive into
Python两本书。话说半个月看两本,是个人都知道有多囫囵吞枣,这也是因为我暂时没有需求拿这个做大型开发,主要是平时的小程序test用一用。所以
我的策略是,整体浏览,用到时候现查。话说这核心编程第一版太古老了,老在讲2.2之前的东西,我看的翻译电子版,翻译得也不好,很晦涩。看完这个后还有
点云里雾里,看网上人家说DIP好,啄木鸟还有免费电子文档,就找来看这个。怎么说呢,讲的比核心编程好,但不适合第一次看的初学者。我之所以觉得讲得
好,是因为看核心编程,有些概念还有些模糊,看了这本书就明白不少了。要是初学者上来就看这本,保证不好理解。
下面就是在学习的过程中,在翻阅资料的过程中,总结的一些C和python比较明显的不同之处,有大方向的,也有细节的。肯定没有总结完,比如动态
函数,lambda这些,我都懒得往上写了。实际上,作为两种完全不同的语言,下面这些差异只是冰山一角而已。权当抛砖引玉吧,至少应该对和我有相同研究
兴趣,正在考虑是否学习另一门语言的朋友有点帮助。此文也算是DIP的学习笔记吧。顺带说一句,要是有朋友了解,可以帮忙推荐一下实战性强的Python
教材,语言这东西,不多练手,光比划,是不可能学好的。
学习目的
我的以后的研究方向是嵌入式,显然,C语言是我的主要语言。我不是一个语言爱好者,我以前觉得,对于做研究而不是应用的人来说,了解多门语言,不如
精通一门语言。之所以去看python,主要还是因为python更有利于快速开发一些程序,也是因为现在认识到,研究和应用是不能分离的。个人以为,要
想在计算机工程的竞争中立足,必须懂C语言。因为真正要做高性能编程,
不可能将机器的体系架构抛到脑后让Python虚拟机(或Java虚拟机等)帮你搞定所有底层。越来越多的CPU
core,越来越恐怖的内存性能瓶颈,对于上层开发人员来说,无所谓,但是对高性能程序开发人员来说,这些是无法透明的。很多应用,还是自己掌控比较有
效。这些场合中,汇编和C还是不可替代的。但是,光知道C是不够的,掌握一门面向对象语言,相对更高层的语言,不仅对以后的个人发展有利,也会对自己的技
术认识产生帮助。
如果要问对我来说谁更重要,我觉得还是C更重要。C的学习曲线更陡,貌似简单,实际上到处都是陷阱,看上去比较简单低效的程序,也不是学1,2个月
就能搞定的。谈到优化的深层次和难度嘛,需要的功底是按年算的。但是一旦你C语言的基础打好了,对计算机的理解,对其他语言的理解都是大有裨益的。比如,
如果你有C基础,可以说,学过1天python,就能写的出来一些不短的程序。后面的优化也不是什么大不了的算法,都是非常基本的语句换来换去。当然这里
不是说 Python不好,实际上,上层应用,Python比C方便的不是一个层次。
很多人觉得,既然懂C了,那么进一步掌握C++应该是水到渠成,但C++不是C的超集,而我又不喜欢C++的繁琐和巨大,所以才决定看一看Python。我很喜欢Python的优雅与快捷。
语言类型
和C不一样,Python是一种动态类型语言,又是强类型语言。这个分类怎么理解呢?大概是可以按照下列说明来分类的:
静态类型语言
一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java和 C 是静态类型语言。
动态类型语言
一种在运行期间才去确定数据类型的语言,与静态类型相反。Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型语言
一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。
弱类型语言
一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 ‘12′ 和整数 3 进行连接得到字符串’123′,然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。
对象机制
具体怎么来理解这个“动态确定变量类型”,就要从Python的Object对象机制说起了。Objects(以下称对象)是Python对于数据
的抽象,Python中所有的数据,都是由对象或者对象之间的关系表示的,函数是对象,字符串是对象,每个东西都是对象的概念。每一个对象都有三种属性:
实体,类型和值。理解实体是理解对象中很重要的一步,实体一旦被创建,那么就一直不会改变,也不会被显式摧毁,同时通常意义来讲,决定对象所支持的操作方
式的类型(type,包括number,string,tuple及其他)也不会改变,改变的只可能是它的值。如果要找一个具体点的说明,实体就相当于对
象在内存中的地址,是本质存在。而类型和值都只是实体的外在呈现。然后Python提供一些接口让使用者和对象交互,比如id()函数用来获得对象实体的
整形表示(实际在这里就是地址),type()函数获取其类型。
这个object机制,就是c所不具备的,主要体现在下面几点:
1 刚才说了,c是一个静态类型语言,我们可以定义int a, char
b等等,但必须是在源代码里面事先规定。比如我们可以在Python里面任意一处直接规定a =
“lk”,这样,a的类型就是string,这是在其赋值的时候才决定的,我们无须在代码中明确写出。而在C里面,我们必须显式规定char *a =
“lk”,也就是人工事先规定好a的类型
2 由于在C中,没有对象这个概念,只有“数据的表示”,比如说,如果有两个int变量a和b,我们想比较大小,可以用a ==
b来判断,但是如果是两个字符串变量a和b,我们就不得不用strcmp来比较了,因为此时,a和b本质上是指向字符串的指针,如果直接还是用==比较,
那比较的实际是指针中存储的值——地址。
在Java中呢,我们通过使用 str1 == str2 可以确定两个字符串变量是否指向同一块物理内存位置,这叫做“对象同一性”。在 Java 中要比较两个字符串值,你要使用 str1.equals(str2)。
然后在Python中,和前两者都不一样,由于对象的引入,我们可以用“is”这个运算符来比较两个对象的实体,和具体对象的type就没有关系
了,比如你的对象是tuple也好,string也好,甚至class也好,都可以用”is”来比较,本质上就是“对象同一性”的比较,和Java中
的==类似,和 C中的pointer比较类似。Python中也有==比较,这个就是值比较了。
3
由于对象机制的引入,让Python的使用非常灵活,比如我们可以用自省方法来查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行
操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。 这些操作在C中都是不可想象的。
4 还有一个很有意思的细节,就是类型对对象行为的影响是各方面的,比如说,a = 1; b =
1这个语句中,在Python里面引发的,可能是a,b同时指向一个值为1的对象,也可能是分别指向两个值为1的对象。而例如这个语句,c = []; d
= [],那么c和d是肯定指向不同的,新创建的空list的。没完,如果是”c = d =
[]“这个语句呢?此时,c和d又指向了相同的list对象了。这些区别,都是在c中没有的。
最后,我们来说说为什么python慢。主要原因就是function call
overhead比较大。因为所有东西现在都是对象了,contruct 和destroy 花费也大。连1 + 1 都是 function
call,像’12′+’45′ 这样的要 create a third string object, then calls the string
obj’s __add。可想而知,速度如何能快起来?
列表和数组
分析Python中的list和C中的数组总是很有趣的。相信可能一些朋友和一样,初学列表的时候,都是把它当作是数组来学的。最初对于list和数组区别的定性,主要是集中在两点。首先,list可以包含很多不同的数据类型,比如
["this", 1, "is", "an", "array"]
这个List,如果放在C中,其实是一个字符串数组,相当于二维的了。
其次呢,list有很多方法,其本身就是一个对象,这个和C的单纯数组是不同的。对于List的操作很多样,因为有方法也有重载的运算符。也带来一些问题,比如下面这个例子:
加入我们要产生一个多维列表,用下面这个语句
A = [[None] * 2] * 3
结果,A的值会是
[[None, None], [None, None], [None, None]]
初一看没问题,典型的二维数组形式的列表。好,现在我们想修改第一个None的值,用语句
A[0][0] = 5
现在我们再来看看A的值:
[[5, None], [5, None], [5, None]]
发现问题没有?这是因为用 * 来复制时,只是创建了对这个对象的引用,而不是真正的创建了它。 *3 创建了一个包含三个引用的列表,这三个引用都指向同一个长度为2的列表。其中一个行的改变会显示在所有行中,这当然不是你想要的。解决方法当然有,我们这样来创建
A = [None]*3
for i in range(3):
A[i] = [None] * 2
这样创建了一个包含三个不同的长度为2的列表。
所以,还是一直强调的,越复杂的东西,越灵活,也越容易出错。
代码优化
C是一个很简单的语言,当我们考虑优化的时候,通常想得也很简单,比如系统级调用越少越好(缓冲区机制),消除循环的低效率和不必要的系统引用,等
等,其实主要都是基于系统和硬件细节考虑的。而Python就完全不一样了,当然上面说的这些优化形式,对于Python仍然是实用的,但由于
Python的语法形式千差万别,库和模块多种多样,所以对于语言本身而言,就有很多值得注意的优化要点,举几个例子吧。
比如我们有一个list L1,想要构建一个新的list L2,L2包括L1的头4个元素。按照最直接的想法,代码应该是
L2 = []
for i in range[3]:
L2.append(L1[i])
而更加优化和优美的版本是
L2 = L1[:3]
再比如,如果s1..s7是大字符串(10K+),那么join([s1,s2,s3,s4,s5,s6,s7])就会比
s1+s2+s3+s4+s5+s6+s7快得多,因为后者会计算很多次子表达式,而join()则在一次过程中完成所有的复制。还有,对于字符串操作,
对字符串对象使用replace()方法。仅当在没有固定字符串模式时才使用正则表达式。
所以说,以优化为评判标准,如果说C是短小精悍,Python就是博大精深。
include和import
在C语言中的include非常简单,因为形式单一,意义明确,当你需要用到外部函数等资源时,就用include。而Python中有一个相似的
机制,就是import。乍一看,这两个家伙挺像的,不都是我们要用外部资源(最常见的就是函数或者模块(Python))时就用这个来指明么?其实不
然,两者的处理机制本质区别在于,C中的include是用于告诉预处理器,这个include指定的文件的内容,你都给我当作在本地源文件中出现过。而
import呢,不是简单的将后面的内容*直接*插入到本地里面去,这玩意更加灵活。事实上,几乎所有类似的机制,Python都比C灵活。这里不是说C
不好,C很简练,我其实更喜欢C。
简单说说这个灵活性。import在python中有三种形式,import X, from X import *( or a,b,c……),
X = __import__(’x')。最常用的是第二种,因为比较方便,不像第一种那样老是用X.mole来调用模块。from X
import *只是import那些public的mole(一般都是不以__命名的模块),也可以指定a,b,c来import。
什么时候用哪一种形式呢?应该说,在大多数的模块文档里,都会明确告诉你应该用哪种形式。如果需要用到很多对象,那么from X import
*可能更合适一些,但是,就目前来看,大多数第三方Python库都不推荐使用from molename import *
这种格式。这样做会使引入者的namespace混乱。很多人甚至对于那些专门设计用于这种模式的模块(包括Tkinter,
threading和matplot)都不采用这种方式。而如果你仅仅需要某个对象类a,那么用from X import a比用import
X.a更好,因为以后你调用a的函数直接用a.function()既可以了,不用加X。
如果你连自己希望import的模块都不知道怎么办?请注意,此时Python的优势就体现出来了,我们可以用
__import__(mole)来调用mole,其中这个mole是字符串,这样,可以在运行时再决定,你到底要调用什么mole。举
个例子:
def classFromMole (mole, Name):
mod = __import__ (mole)
return getattr (mod, Name)
这里,定义了一个函数classFromMole,你可以在代码的任何时候调用它,
o = classFromMole (MoleOfTheClass, NameOfTheAttribute)()
只需要传入字符串形式的你希望import的模块MoleOfTheClass和其中属性的名字NameOfTheAttribute(当然可以是数据也可以是方法),就能调用了,这个名字字符串不用事先指定,而是根据当时运行的情况来判断。
顺带说一句,Python中import的顺序也有默认规定,这个和C中的include有点类似,因为我们一般都是先include系统文件,再
include自己的头文件(而且还有<>和“”的区别)。Python中呢,一般应该按照以下顺序import模块:
1. 标准库模块 — 如 sys, os, getopt 等
2. 第三方模块
3. 本地实现的模块。
全局变量
这里谈全局变量呢,倒不是说Python和c的全局变量概念不同,他们的概念是相同的。只是在使用机制上,是有一些差异的。举个例子:
– mole.py –
globalvar = 1
def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.
def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable
在 func这个函数中,globalvar是只读的。如果你使用了globalvar =
xxx这种赋值语句,Python会重新创造一个新的本地对象并将新值赋给它,原来的对象值不变。而在func2函数中,由于我们事先申明了
globalvar是global的,那么此时的更改就直接在全局变量上生效。
‘玖’ 初学者学c还是学python
首先,C语言是一门通用性编程语言,为什么说通用呢?因为它能够做到很多低级、底层的处理,同时具有良好的跨平台性,可以按照一定的标准在多种计算机平台上进行编译,包含嵌入式编程。
Python是一门面向对象的编程语言,它和C存在很大的区别,Python是解释型的编程语言,虽然说Python从运行效率上与C语言相对比较低,但是Python有着丰富的三方库,这些都是用C
C++编写而成的,让他跟C具有一定的通用性,Python的专长在于数据分析以及人工智能方面。
总体来说,C语言更加基础,而Python语言更加实用。
对于今后想要从事嵌入式方向,那么可以选择C作为主攻方向,对于想要从事编程方面工作的朋友可以多学习几门语言,让自己更加开阔视野。而选择学习Python主要的原因就是快速而简洁开发一些程序,易学易懂,当然了想要拥有各方面更好的发展,掌握每一门语言都是重要的事情,可以起到非常重要的作用。
当然,C和Python该如何选择?每个人的情况不同,自然选择上也是存在差异的,根据自身情况来决定就可以了,如果你还在疑惑选择哪个编程语言,可以选择与oldboy老师聊聊,帮你答疑解惑。
‘拾’ c语言和python哪个好学
从目前情况来说,Python上手简单交互性强的开发环境,还有众多第三方库,学习起来比C语言容易很多;C底层强在内存操作,功能实现起来十分复杂并不适合新手作为新手语言。
Python和C语言各有各的优势,Python的语法非常特殊,Python由空格严格控制的,对那些刚接触编程的人来说并不好,目前没有出现与Python相同语法的语言出现。
如果用C语言开始编程可以更好地掌握编程基础,理解代码的操作原理,但是学习C语言是枯燥的,会阻碍你的学习。
使用Python有很多高级接口,但是底层实现方面比较模糊,不过可以在Python之后学习C语言来弥补这一点,所以建议从学习Python开始。
两者之间的区别:
1、语言不同:C语言是一种编译语言,而Python是一种脚本语言;
2、全局变量方面:Python中,我们需要引用别的模块,引用import引入,在C语言中,需要在头部使用inClude去引入;
3、状态不同:C语言是一种静态语言,而Python是一种动态语言。