我是数学专业的研究生,计算机科学专业的本科生。我开设了一个名为Math∩Programming的博客,其中探讨了数学在编程中的应用(反之亦然),我不得不承认,我发现计算机科学的大多数非数学方面都比较枯燥乏味,没有灵感(基本上,我反对根据我在行业中的经验,所有进入系统编程的荒谬技巧。
另一方面,在我的博客上,我研究了诸如面部识别(相当多的线性代数),加密方法,图灵机和细胞自动机,预测连环杀手活动的模型,搜索引擎以及许多其他数学概念之类的问题。 。最好的部分是我可以实施这些想法,也可以自己实现!
为了让您的朋友像我们其他人一样热爱编程,发现他是一个真正有趣的人项目。如果不致力于自己发现的漂亮产品,编程方面就不会停留。至于语言,我建议使用Mathematica,Racket(一种非常友好,但仍然功能强大的Scheme衍生物),Python和Haskell。Mathematica可能是最好的,因为他可以有选择地实现自己的数学函数,并使用Mathematica的内置库来完成项目(例如,编写一个计算傅立叶系数的函数,然后使用Mathematica进行其余的分析,例如例如过滤,图像生成等)。甚至诸如集成这样的基本主题也给出了一些引人入胜的项目(不同的正交规则,蒙特卡洛集成,向具有大数据集的机器学习的平稳过渡)。
同样,这里似乎有很多回复来自那些不做数学的人,或者没有使用他们建议用来做数学软件的语言的人。人们之所以推荐Haskell,是因为它尽可能接近类别理论的字面实现,并且非常适合某些基本概念的数学定义。但是,如果您的朋友已经接近您的年龄,那么他就不会在数学上做好分类理论的准备(成熟度在研究生院之前或多或少是无用的,并且非常想教自己),并且作为第一语言,Haskell具有最陡峭的语言建议的语言的学习曲线(也许Prolog更陡峭)。我使用Haskell实现了Javascript编译器,最后得到了非常漂亮的优美代码段,但是对于诸如变量突变之类的直观事情,您已经不得不涉足非同寻常的单子。
Python和Mathematica会更加友好,而Mathematica的学习曲线最浅,这仅仅是因为所有库都打包成带有精美文档的漂亮用户界面(只需按F1键即可)。另一方面,有一本我听说过(但未读过)的书,既提供了到高级数学的过渡又同时介绍了Haskell。它似乎获得了亚马逊的正面评价,因此您可能需要检查一下。如果他想从事行业工作,他可以升级到C#和Java之类的语言,但是他更有可能永远不需要进入那个丛林(而且很多行业数学的东西都是纯Matlab编写的)。
但是就像我说的那样,通过正确的项目学习,无论该项目如何,语言都会成为一种快乐。