用什么语言刷题最有排面?
共 1764字,需浏览 4分钟
·
2021-10-26 11:25
很多读者向西法反应:“能不能在专题和题解里面增加 xx 语言”。
我的回答一直都是:「我会尽量添加多种编程语言,但也请你不要依赖于某种具体的编程语言来学算法」。
熟悉我的朋友都知道,我刚开始的时候,我使用 JS 比较多,之后使用 Python 比较多,现在也在陆续更新题解的 C++ 语言,之后会考虑其他的语言。接下来的话应该是优先考虑 Java,让大家学习曲线更平滑。
但是另一方面我也强烈建议大家不要依赖于某一种具体地编程语言。我当然知道学习和切换编程语言需要时间,也体会到使用自己熟悉的编程语言效率更高。
很多读者像我反应:“能不能在专题和题解里面增加 xx 语言”。
我的回答一直都是:「我会尽量添加多种编程语言,但也请你不要依赖于某种具体的编程语言来学算法」。
熟悉我的朋友都知道,我刚开始的时候,我使用 JS 比较多,之后使用 Python 比较多,现在也在陆续更新题解的 C++ 语言,之后会考虑其他的语言。接下来的话应该是优先考虑 Java,让大家学习曲线更平滑。
但是另一方面我也强烈建议大家不要依赖于某一种具体地编程语言。我当然知道学习和切换编程语言需要时间,也体会到使用自己熟悉的编程语言效率更高。
但问题是我们无法控制大环境。据我所知,经常更新文章的大佬使用的编程语言语法么都有,C++,Java,Python 都有的。如果因为语言看不懂跳过,那么肯定会错过很多优秀的文章和题解。你说是不是很可惜?
那问题是我真的看不懂怎么办?一个超级有效的方式就是「使用不同的编程语言刷题」。比如你就定一个小目标「比如用 C++刷 100 道题」,这样慢慢你就对 C++ 的最最基础的特性了解了,这样下次看到别人的 C++ 题解你在看看,是不是能看懂了?这是因为「大家刷题很少用一些高深的语言特性,尤其是那些大佬的题解,它们会注意这些的」。因此你稍微练习一下,基本上以后看其他语言的题解就不成问题的。
很多人刚开始切换到其他编程语言会深深地感到不适应。比如怎么创建一个数组呢?怎么反转一个数组?怎么新建一个哈希表?等等等 一个个查真的是效率很低,以至于很多人都坚持不下来。
我其实刚刚在用新语言的时候也是一样的,今天介绍的网站就整理了「很多常见操作的不同语言对比实现」
以 C++ 的 reverse 为例:
你可以点击上面的编程语言查看其他语言的 reverse 是如何实现的,目前该网站已经提供了 277 个语言特性,这个工具网站对那些刚开始学习新语言的人非常有用。
我们甚至可以直接开启对比模式,以 Python 和 C++ 对比为例:
地址:https://programming-idioms.org/idiom/19/reverse-a-list
最后回答一个相关的问题,读者问的也比较多。那就是:「有没有推荐的刷题语言?」
其实这个问题之前回答过,今天再讲一次。一句话回答就是:建议选择一门动态语言和一门静态语言,比如选择 Python 和 C++。
原因是什么呢?
刷题以及打比赛都讲究速度,天下武功唯快不破。
这个快,一方面是「运行速度快」,另一方面是「编码速度快」。你可以看出很多人刷题,打比赛都会不断切换语言的。我们要承认不同语言效率是不一样的,这个效率可能是执行,也可能是编码。具体使用哪种语言,看你的需求。
论编码速度,那肯定动态语言快,论执行速度那肯定静态语言快。所以我的建议是大家至少掌握「一静一动」,即掌握一个动态语言,一个静态语言。
「我个人动态语言用的 Python 和 JS,静态语言用的 Java 和 CPP,大家可以作为参考。」
一个小建议是你选择的语言要是题解比较热门的。那什么语言是热门的?其实很容易。力扣题解区,语言排名高的基本就是了,如下图:
掌握语言不仅能帮助你在效率中运用自如,并且还容易看懂别人的题解。除此之外还有一个用,那就是「回头复习的时候用」。拿我来说, 我会不固定回去刷以前做过的题,但是一道题做过了就没新鲜感了,这个时候我就换个语言继续刷,又是一番滋味。