完全零基础小白,如何学计算机语言?

By natasha at 2020-04-10

我完全没有任何技术基础,想学习编程,请问如何下手?

我的“远大目标”(白日梦)是:用编程进行统计分析,和各种视觉化分析。

请想象你对着一个冰箱讲解,冰箱懂了我就懂了。因为我的基础就跟冰箱一样。谢谢!🙏!

小白, 计算机, 语言, 完全, 基础


r语言或者Python适合你

下载anaconda,然后跟着demo开始练习就好了

张怀义 at 2020-04-10
1

你想做什么,就GitHub上搜索,应该都有现成的。然后改改就好了

张怀义 at 2020-04-10
2

@张怀义 #1

谢谢,你把冰箱想的太智能了…..

natasha at 2020-04-10
3

我觉得要是我的话,我选举替冰箱换个硬件,升级一下芯片

electron8964 at 2020-04-10
4

@natasha #3 前辈,我觉得你不是程序员。没必要hello world开始。那些语法开始的教程,在我眼里就像孔乙己的茴香豆。

你可以看看anaconda,入门真的很简单。

r studio或者jupyter,都是很容易的。操作界面就像MATLAB

如果前辈会MATLAB的话。直接MATLAB就可以完成你问题里的操作

Python可以看看numpy和pandas

大部分程序员只会crud,不会统计和可视化

张怀义 at 2020-04-10
5

@natasha #3 或许先对于编程本身又个整体思路会更有帮助。你会用到的大部分编程语言都是命令式的,就像你按下 Control+V 可以复制文字一样,编程的代码就是一条条命令,你运行这些代码,电脑就会按照顺序一个个执行每一个命令。比如代码 print("hello world") 就是一条命令,告诉电脑 print 出(在屏幕上显示出)hello world 这一条文字。

为了让程序运行更加方便,有人又发明了变量(variable)和函数(function)。变量就能把一堆值储存起来,能够更方拜地使用,比如 a = "Hello world don't let 2049 die!" 这么长一句话每次打太麻烦,用 a = 赋值之后每次只要用 a 就能指代这么长一段话的内容。print(a) 的效果等同于 print("Hello world don't let 2049 die!")。同理,函数则是把一堆命令储存起来,然后每次调用函数的时候,就能方便地执行一大堆命令。上面的 print(a) 就是一个函数,然后括号当中的 a 就是传给函数的参数,让代码可以根据不同的参数执行出不同的结果。

上面这些都是语言基础,当你学完之后好像和画图之类还差得远,不过你可以直接导入别人写好的代码包,然后调用他们的函数。Python 有非常多现成的代码包,你只要调用一个函数比如 plot(data)运行就自动帮你把数据画出来,基本只要懂 Python 基础,就能够进行数据分析了。

总结,编程语言就是执行一个个命令,只是平时都是用鼠标点击,在代码里你是用文字告诉电脑你想要它执行什么命令,这样做的好处是程序更加有灵活性,随便开个 txt 就能写代码,也非常容易储存。而其他所有的变量、函数、循环之类的东西,本质都是服务于这些命令,让你可以少写点字,更加高效地写出命令。以下的教程链接可以用来学 python 代码的基础语法,看不懂的地方可以直接跳过,大概一个下午的时间就能够入门了,编程入门实际上非常简单。然后再下面一个链接是在线执行 python 的代码,这样你就不用折腾安装程序之类的问题,对新手来说安装程序才是最耗费时间、最容易出问题的环节。第三个链接是 Google Colab,一个用 Python 数据分析的网站,也是直接在线使用,你学完基础语法之后,就可以找教程学习怎么进行数据分析了。

教程:https://www.runoob.com/python3/python3-tutorial.html

在线运行 Python:https://c.runoob.com/compile/9

Google Colab:https://colab.research.google.com/notebooks/intro.ipynb#recent=true

origin at 2020-04-10
6

@张怀义 #5 是这个道理,不过主要矛盾是大部分 numpy、jupyter 的教程不会教循环、函数之类的东西,看着例子去猜是什么意思,不如花一个下午的时间了解一下。 @natasha 不知道你是图新鲜还是有真实的需求,如果图新鲜可以学 JavaScript,和 python 不一样的地方在于,JavaScript 可以在浏览器里运行,所以可视化的代码包非常丰富而且总体来说也比 matplotlib 之类的更加方便。

JavaScript 教程:https://www.runoob.com/js/js-tutorial.html D3.js(可视化代码包)教程:https://wiki.jikexueyuan.com/project/d3wiki/introduction.html

origin at 2020-04-10
7

啊啊,你的学习支撑点是统计分析和可视化,我觉得不用看很多fancy的东西,先看哈神的r4ds,真的是从数据的角度来教新人,我建议不要从python学起,因为新手很容易在大蟒蛇的基础语法中迷失学习的兴趣。

等你把r学得差不多了,看一个大熊猫(pandas)十分钟速成文档,就可以用python来看r的事情了。

可视化,一定要学ggplot2,不是说一定要用,这本书把可视化的本质讲出来了,实质是数据到视觉元素的映射,并且使用一套严格的语法grammar,来让你明白一个完整的视觉图形应该怎么做。虽然 Tableau 这类工具足够傻瓜化,但是理解可视化的本质才能让你真正掌握这个强大的工具。真正的可视化高手是不会囿于 Tableau 这类工具的局限的。

小二 at 2020-04-10
8

另外感慨一下,哈神和谢益辉两个人就能把统计工具普及推动20年……人类的进步终究是由大神推动的

小二 at 2020-04-10
10

@origin #7 也有道理,for语句不讲一下,没人知道for语句在干嘛。

不过我建议numpy和pandas看一遍就开始实战。

其实natasha就是统计和可视化,r和Python是最好的选择。。。

张怀义 at 2020-04-10
11

@小二 #10 我不知道natasha前辈想干嘛。

我先猜想她想的和Rebecca一样,爬了2049的数据做统计。那么还得写爬虫。

最后还不如Python写了爬虫,pandas分析。

如果数据集问题不需要考虑,那么就r studio直接干了

张怀义 at 2020-04-10
12

@张怀义 #12 学SQL就行了,数据集都是公开的

小二 at 2020-04-10
13

@小二 #13 我只会crud,用sql写期望,方差,标准差,概率分布,判定系数,置信区间,数据拟合,聚类,我就不知道sql怎么写了

natasha学的统计?如果不会统计,光学编程也没用啊。。。

张怀义 at 2020-04-10
14

natasha这个问题,居然不请品葱公认码力最高的俺来回答,真是

https://pincong.rocks/article/15639

rebecca at 2020-04-10
15

@electron8964 #4

换硬件。。这是要换头吗?

natasha at 2020-04-10
16

@张怀义 #14

谢谢你这么多建议,可惜估计冰箱听不懂啊。。。。

大兄弟,俺是文科生。。。。

natasha at 2020-04-10
17

@origin #6

谢谢!我觉得你这件讲解方式非常适合我这种冰箱级基础。

请问,为什么计算机世界有这么多语言?是否跟人类语言一样?各种计算机语言的关系是什么?那么是否有一种英文级别的语言,一讲就顶所有?学哪种最有用?

natasha at 2020-04-10
18

@小二 #8

谢谢!虽然你说这种语言足够傻瓜化,可是高估了傻瓜的下限,我还是需要一点入门的铺垫。。。从完全素人零基础,到r4ds。。。。。

natasha at 2020-04-10
19

@张怀义 #12

大兄弟,你估计错了,我不想爬了2049的数据做统计,我想做的是其他事情…..

natasha at 2020-04-10
20

@natasha #17 你最好直接说你想做什么。如果是编程,我们说怎么编程。如果是统计,我们说怎么统计。

统计可以用MATLAB,SPSS,r语言,Python。。。

编程就是另外一个问题了

编程语言多,是一个很复杂的问题。别问,问就头痛

张怀义 at 2020-04-10
21

@rebecca #15

谢谢,这个故事看起来很有趣,有没有接着写?

不用过于孩子语气,可以适当快进一点点….当然只是一点点,太快我就追不上了….

natasha at 2020-04-10
22

@张怀义 #21

我倒是想痛快,从我的问题你就知道,我完全零基础,想问问题都问不出来。能问出问题来的学生,那都是好学生啊!

natasha at 2020-04-10
23

@张怀义 #21

说一个具体的诉求吧,当然对我现在来说还是一个白日梦般的理想:

我是搞人文的,我们有时候会用到动态地图和数据的视觉化分析。目前我是用stanford开发的palladio工具,这个工具是面向人文学科人士,是一款完全用不到coding的工具,只用excel代入数据就好。

缺点是:

  1. 我只能用它做现场展示,关了就消失,无法保存在一个网页上

  2. 这个工具还有一定的限制,无法根据自己的需求改动

我想做的,就是或者在这个工具基础上进行改进,或者能够讲自己收集的数据做视觉化分析。

natasha at 2020-04-10
24

@natasha #19 r4ds 就是零基础的呀,从安装到入门,都是有的。

https://r4ds.had.co.nz/introduction.html#running-r-code

小二 at 2020-04-10
25

@natasha #16

或许可以试试?

electron8964 at 2020-04-10
26

@小二 #25

嗯嗯!看到introduction了,果然看起来够“傻瓜”,谢谢!我先去学习一下!

natasha at 2020-04-10
27

@natasha #24 我做过类似毕业设计。很简单,你给我打钱,然后就什么都有了,不用写一行代码。

rebecca at 2020-04-10
28

@rebecca #28 你对别人说这种话不怕被一枪打死吗?

小二 at 2020-04-10
29

@rebecca #28

你们没有专业伦理课吗?

natasha at 2020-04-10
30

@natasha #30 我这个人比较现实主义(虽然品葱站长说我是理想主义,但他自己也搞敏感词审查了,所以)

既然你提到伦理,我理解成“你能不能正经回答我的问题”的意思。

那我就正经回答你吧

首先你是小白,然后你有一个不用写代码的工具可以做一些事情,然后你想通过写代码去改这个工具,所以你想学写代码

以我的从业经验,最快的方法其实就是贝卡在故事里面介绍的方法,其他方法都是事倍功半的。我不可能非常具体地告诉你我在哪里工作,所以你可能没办法很快相信我,但我非常肯定的是,你如果走其他道路,转一大圈回来解决不了,最终还是要花钱请人。

但是按照故事里的方法,虽然实际上是最快的,但表面上看却是最慢、最没效率的,你也强调你是文科生,总结一句话就是你想偷懒。

偷懒的最快方法就是一手交钱一手交毕设。

回答完毕。

rebecca at 2020-04-10
31

品葱那帮傻X管理员居然怀疑我是natasha

尼玛这根本不像我

rebecca at 2020-04-10
32

@rebecca #32 你哪只眼睛看到别人是要做毕设了……有钱万能傻瓜都知道,问题是你得用技能去换钱……

小二 at 2020-04-10
33

@rebecca #32 要是面对面看到有人跟我这么说话,早就一枪爆头了

小二 at 2020-04-10
34

@小二 #33 如果不是毕设,有几种情况

  1. 离毕业还早着呢
  2. 已经毕业了,从事教学工作
  3. 在公司工作

可能性2和3不需要上论坛问,直接问同事就是了

可能性1和毕设基本是一个意思

rebecca at 2020-04-10
35

@rebecca #31

你这个啥主义也不是,let alone理想主义…

伦理的意思就是(唉,我咋还得给你讲伦理):

你是个医生,就好好给人看病,将病人生命健康当作第一位;

在医疗资源有限的时候,如何将资源分配给情况不同的病人;

如果你是一个文物修复师,如何能恢复物品原样而不是弄得跟新的一样;

如果你是一个记者,就把报道真相当第一位;

如果你是一个作家,要怎么写出风骨

在香港反送中运动的时候,应该怎样理解示威者的暴力(并不是非黑即白这么简单)。。。。。

总之,伦理就是教你做事之前先做人。一般稍微正经点的大学,每个专业都应该有伦理课的,不知道你是没上,还是你们学校没开。。。。

还有,谁说文科生就是想偷懒啊?你这是要得罪全天下所有文科生吗?

natasha at 2020-04-10
36

@rebecca #32

我跟你的确不像。

你这样的思想怎么能去教学啊?

natasha at 2020-04-10
37

@rebecca #35

我以为你说你自己在教学。。。喔,原来你在猜测我,可惜你都猜错啦!

你太武断了,世界怎么就只能有这么小的可能范围。。。。

natasha at 2020-04-10
38

@natasha #18 理论上来说,所有的编程语言能够实现的东西都是一样的(图灵等价),即在 C 里面能做到的功能,Java 和 python 也一样能够做到。虽然都是具体执行一条条命令,不过具体使用的时候侧重点不同:比如 C 更加靠近底层二进制,所以运行速度可以比 Python 快上很多,但是写起来非常麻烦,很容易报错;与之相对的,Python 的语法非常灵活,上手很容易;上面站长提到的 R 语言则是专门为统计编写的程序,其中有很多内置的代码包,直接调用就能完成许多功能,不需要自己再手动档了。或许确实不存在一个秒杀所有的万灵药,不过单纯是统计和可视化的需求,R 暂时绝对是最主流的选择。

#24 我看了一下 Palladio 这个项目,它的代码是用 Javascript 加上代码包 D3.js 写的,暂时没有开放接口让你可以用其他语言来自定义配置。不过 D3.js 能够实现的功能 R 都可以差不多地实现,也就是界面好不好看的差别。你可以先学 R,之后再考虑 JavaScript,因为相较于 R 来说,JavaScript 里面有很多复杂的细节,消耗初学者耐性。

origin at 2020-04-10
39

@natasha #24 很好的想法啊,我也一直有这种类似的想法。:)我一般作图都是用现成的统计软件里自带的作图功能,不一定那么漂亮,但信息传达够用。网页上,可以看看D3.js(https://d3js.org/),用的是javascript语言,可以用于网页的动态作图。R的好处是有各种用户建立的包(package),而且如果你想以后自己写包用于某个功能,也要从那里开始。

我个人的建议是,先学R,从最简单的开始。比如先把R当计算器用,输入1+1,回车,出来个2;输入7^3,出来个343;超好用。R没有那么复杂,很多语言都非常的intuitive,可以一步步来,从导入数据,归纳数据,做最简单的图开始(如plot(data),直接出图),然后慢慢学写函数、图形复杂化等功能。R已经有了可以导出网页的功能,不过我个人这方面不太了解。

如果要做类似Palladio的,学javascript。这个我也只略接触过,对于初学者来说比R复杂。总之还是建议R。

爱狗却养猫 at 2020-04-10
40

@origin #39

谢谢,你的解释非常清楚,正好解释到我有困难的点上。

那么我就从R开始学起。请问有没有一个大致的学习进度表?对于我这种素人来说,比如平均学习多少个小时能达到某种程度?

natasha at 2020-04-10
41

@爱狗却养猫 #40

谢谢,很高兴看到有类似诉求但远远走在我前面的。我会多跟你请教经验的!✌️

natasha at 2020-04-10
42

@rebecca #31 未必是只为了达到某个结果,学习和拥有某个技能本身也是目的啊。

你和natasha像?这样评价你的人都不太会看人(算了,不说具体人和事了,mouth zipped!)。

爱狗却养猫 at 2020-04-10
43

@natasha #42 多多交流!:)

爱狗却养猫 at 2020-04-10
44

R的话先用RStudio吧,对人文社科界的应用研究者比较友好,可以和point and click结合,导入数据,直接在一个窗口看数据,等等。学R语言的话可以看看coursera上的课程,有具体的schedule,如这里:https://www.coursera.org/learn/r-programming

爱狗却养猫 at 2020-04-10
45

@爱狗却养猫 #45

这个课程好棒啊!谢谢分享! 🙏!

natasha at 2020-04-10
46

本小白基本不怎么在论坛发言,一直潜水,但有一样的需求,感谢楼上各位大佬!

刁大大 at 2020-04-11
47

“给冰箱讲清楚”这个形容真可爱。用编程进行统计分析和可视化也是我的目标,所以根据我自己的经验给你一点点建议吧。因为我也只能算是新手,所以也许有说错的地方,如果和别人有冲突,还是以别人为准吧(笑)

首先是学python还是R。用任何一种语言做数据分析的人都挺多的,但我比较喜欢python的语法,另外python在其他地方的用途也更广泛。你可以根据自己的需求来选择。

如果选择学python,和楼上的朋友们的提到的一样,下载anaconda,这是一个比较方便的搭环境的方式。接下来你可以找一些coursera这类平台上的公开课来学习,关键词是python和data science/data analysis。这些课程一般会从零开始讲解简单的python语法,一些处理数据用的常用库如numpy和pandas等。另外也推荐kaggle上的课程。如果你想要学习数据可视化,也同样推荐公开课和kaggle的课程。

学习这些课程之后你应该已经可以像使用excel一样用python对数据进行处理和作图。接下来就是多练习。可以找一些数据集,对你感兴趣的东西进行处理分析和展示。仍然推荐kaggle,有很多有意思的数据集可以玩。你也可以用kaggle作为关键词来搜索别人对于数据的分析过程。另外reddit的dataisbeautiful版有很多不错的数据可视化图,应该可以给你很多灵感。

虽说是要学习一门编程语言,对新手来说可能听起来有点可怕,但实际上整个过程并不会太难,和学excel或者ppt的过程差不太多,所以不用太紧张。希望可以帮到你。

greylion at 2020-04-11
48

@greylion #48 谢谢这么详细的经验分享。可惜我无法两种语言一起学。昨天我下载了R编辑器和studio,coursera视频教程我看了一下觉得讲解很人性化,先试试看R。如果遇到不懂的,再向你,以及其他有经验的人请教,谢谢!🙏!

natasha at 2020-04-12
49

@爱狗却养猫 #44

我昨天看了coursera视频教程的week 1,前面讲如何下载那段都跟得上,等下载完,视频里的老师一打开R编辑器就咣咣敲代码……以我冰箱级的理解能力,立刻晕到冷冻格。。。。我咋知道敲哪个代码呢?

natasha at 2020-04-12
50

@natasha #50 那个课我上过,非常糟糕,就是课程内容与作业之间的 gap 非常大,这是所有学员的反馈……不建议你从那个课开始。

小二 at 2020-04-12
51

@小二 #51

呀!那咋办呢?我现在的进度就是——下载了编辑器。。。。。下一步该干啥?😷😺🐶。。。

natasha at 2020-04-12
52

@natasha #50 不好意思啊,那个课可能因为我之前就熟悉R所以没意识到对新手不友好 我再找找有没有用RStudio 的课!

爱狗却养猫 at 2020-04-12
53

@natasha #52 下载r和rstudio,r4ds从头看啊

小二 at 2020-04-12
54

@小二 #54

嗯嗯,好的,我去看👌。。。

natasha at 2020-04-12
55

@爱狗却养猫 #53

你太好了。。。

natasha at 2020-04-12
56

@natasha #56 (脸红)我都不好意思了:p

看看这个?https://rladiessydney.org/courses/ryouwithme/01-basicbasics-1/

爱狗却养猫 at 2020-04-12
57

@爱狗却养猫 #57

哇!谢谢!这么快就找出了另一个。我lou了一眼,看到最后一行是tada!觉得这个作者好可爱 :-D 🐶

我去仔细读读。

natasha at 2020-04-12
58

@爱狗却养猫 #57

我看完了BasicBasics 1的视频,讲解得真是冰箱级,太适合我了,秒懂,感觉智商一下子又在线了 :)

natasha at 2020-04-12
59

@natasha #59 哈哈:)本来就没掉线过!静待成为R 大神!:p

爱狗却养猫 at 2020-04-12
60