文章
观点

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

natasha 饭姐

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

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

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

菜单
  1. 张怀义  

    r语言或者Python适合你

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

  2. 张怀义  

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

  3. 张怀义  

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

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

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

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

    Python可以看看numpy和pandas

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

  4. natasha 饭姐
    natasha  

    @张怀义 #1

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

  5. electron8964  

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

  6. origin  

    @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

  7. origin  

    @张怀义 #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

  8. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。
  9. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

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

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

  10. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

  11. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

  12. 张怀义  

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

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

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

  13. 张怀义  

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

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

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

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

  14. 张怀义  

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

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

  15. rebecca   我不是品葱的神,但是后来发生了一些事情

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

    https://pincong.rocks/article/15639

  16. natasha 饭姐
    natasha  
  17. natasha 饭姐
    natasha  

    @张怀义 #12

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

  18. natasha 饭姐
    natasha  

    @张怀义 #14

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

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

  19. natasha 饭姐
    natasha  

    @origin #6

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

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

  20. natasha 饭姐
    natasha  

    @小二 #8

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

  21. natasha 饭姐
    natasha  

    @rebecca #15

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

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

  22. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

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

  23. 张怀义  

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

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

    编程就是另外一个问题了

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

  24. natasha 饭姐
    natasha  

    @张怀义 #21

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

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

    缺点是:

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

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

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

  25. natasha 饭姐
    natasha  

    @张怀义 #21

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

  26. electron8964  

    @natasha #16

    或许可以试试?

  27. natasha 饭姐
    natasha  

    @小二 #25

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

  28. natasha 饭姐
    natasha  

    @rebecca #28

    你们没有专业伦理课吗?

  29. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

  30. rebecca   我不是品葱的神,但是后来发生了一些事情

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

  31. rebecca   我不是品葱的神,但是后来发生了一些事情

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

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

    那我就正经回答你吧

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

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

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

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

    回答完毕。

  32. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

  33. rebecca   我不是品葱的神,但是后来发生了一些事情

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

    尼玛这根本不像我

  34. rebecca   我不是品葱的神,但是后来发生了一些事情

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

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

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

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

  35. 小二   默认开启批量屏蔽受限用户发言功能,可在设置中手动取消。

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

  36. natasha 饭姐
    natasha  

    @rebecca #35

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

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

  37. natasha 饭姐
    natasha  

    @rebecca #31

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

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

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

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

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

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

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

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

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

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

  38. natasha 饭姐
    natasha  

    @rebecca #32

    我跟你的确不像。

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

  39. origin  

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

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

  40. 爱狗却养猫 饭丝
    爱狗却养猫  

    @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。

  41. natasha 饭姐
    natasha  

    @origin #39

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

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

  42. 爱狗却养猫 饭丝
    爱狗却养猫  
  43. natasha 饭姐
    natasha  

    @爱狗却养猫 #40

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

  44. 爱狗却养猫 饭丝
    爱狗却养猫  

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

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

  45. 爱狗却养猫 饭丝
    爱狗却养猫  

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

  46. natasha 饭姐
    natasha  
  47. greylion  

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

    首先是学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的过程差不太多,所以不用太紧张。希望可以帮到你。

  48. 刁大大  

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

  49. natasha 饭姐
    natasha  

    @爱狗却养猫 #57

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

    我去仔细读读。

  50. natasha 饭姐
    natasha  
  1. 2