【转载】挑战这十七项编程 锻炼大脑并且提升能力(1)

众所周知,编程几乎已经成为各行各业不可或缺的重要技能储备,它能够以无法替代的方式帮助我们组织并维护大型系统,因此如今越来越多的人才也开始踏上这条学习之路。

大家可以通过交互式平台学习编程,也可以从各类教程及论著当中汲取营养——每个人的学习轨迹不同,选择的学习方式亦有所区别。不过,有时候单凭这些资源还不足完全解决问题,我们更需要找到新的实践锻炼途径。

编程是一项充满创造性的工作,每位参与者都有能力提出新的、有趣的想法;不过有时候因为需要将大量时间投入到解决觉问题的工作当中,我们往往忽略了创造力的培养。我不太确定这是否正是各类编程挑战赛的存在意义,但它们确实能够帮助大家从更深层次出发,考量自身在编程工作当中的定位。

从这个角度出发,各类编程挑战赛能够通过以下几个方面为我们带来助益:

  • 学习新的编程实现方式
  • 在实践中磨砺新型编程语言的使用技巧
  • 体验如何解决关键性问题
  • 让我们的头脑保持敏锐与专注
  • 享受由此带来的种种乐趣

在今天的文章中,我们将共同分享17项最佳编程挑战赛事,相信它们能够在大家的编程学习及实践道路上带来显著的推动作用——甚至有可能帮助大家树立起伟大的学习目的,引导各位探索广阔无垠的计算机科学世界。

大家可以在这里赢得真金白银作为奖金,而且作为一个拥有近百万程序员受众的社区,我敢肯定这里会提供大量极具挑战的编程难题。之所以能够给出这样的结论,是因为我发现相当一部分新手编程爱好者都认为[topcoder]的题目确实难度较高。

大家可以同时参加每天以及每周组织的编程挑战活动,这两项赛事的题目都将对各位的头脑及才能提出挑战,只有最睿智的人才能够将其解决。但在参与之后,大家会发现这一切都是值得的,因为所有经历都将成为您个人简历上的一笔宝贵财富。

HackerEarth提供一款SaaS应用程序,旨在对候选人的技术及逻辑能力进行自动化评估。它同时也是一套聚集并筛选开发人员的平台,企业能够在这里找到符合实际需要的理想员工人选。

他们会经常组织各类编程挑战活动,大家可以提前数周注册并申请参加,从而着手准备并提前了解应对难题需要掌握的基础知识。与TopCoder类似,HackerEarth同样是一个质量极高的网站,其提供的各种脑力挑战题目能够帮助大家在未来的职业生涯当中大受裨益。

CodeMonk

HackerEarth的最新亮点在于其新近推出的CodeMonk系列挑战赛事——在CodeMonk挑战赛中,大家可以全身心沉浸在自己编写出的代码当中,并通过反复挑战让实践经验真正融入自己的血液当中。这项挑战赛事主要关注编程难题的解决。

而且如果大家希望进一步发挥自己的冒险精神,并且希望能够突破学习的范畴参与一些真正的挑战活动,那么不妨借助HackerEarth的Sprint服务——其允许我们创建属于自己的黑客马拉松。

Coderbyte是一个依靠Kickstarter众筹建立而成的项目(虽然如此,但它的参加众筹之前就已经存在了),且设计受众主要面向初学者及中等水平编程人员。

该站点建立于2012年,由Daniel Borowski一手缔造,而且如今已经发展成为一个由程序员们自主维护的社区。在这里,技术人员们利用自己的闲暇时间在这里解决各类挑战性难题。

大家也可以在这里就自己不了解的编程内容发问,整个社区的活跃气氛足以帮助各位找到答案并获得充足的干劲。总体来讲,Coderbyte是个人气极高的网络平台,而且风评相当积极——大家不要错过哦。

Project Euler可能是目前世界上人气最高的编程挑战网站了,自十年前创立以来,这里也已经逐渐成为成千上万名用户的活动之家。大家每周都能在这里找到新的挑战题目,但别误以为这样的节奏太过缓慢——此前已经被解决的超过450道难题绝对能榨干您的脑汁。

不过这些题目本身并非难到高不可攀——相反,它们大多强调思路与解决问题的能力,旨在帮助大家培养并学习到更多与所用编程语言相关的知识积累。总之,各类题目都高度针对解决途径而出现,能够确保大家以清晰的思路了解自己到底在利用编程语言做些什么。

要了解更多与Project Euler相关的情况,大家不妨点击以下链接: 维基百科、Reddit、Stack Overflow以及Google Code。

该网站甚至推出了专门的Android应用程序,大家可以点击此处进行下载。

这里我要介绍个人最喜爱的网站之一:Reddit推出的Daily Programmer。如果大家希望了解更多与编程及问题解决思路相关的内容,这里将是非常理想的讨论平台。我认为这正是Daily Programmer目前的核心定位所在,而且各位每周能够在这里找到三道等待解决的独特难题。

更值得一提的是,这里还拥有大量活跃用户。我们在评论当中提交的所有内容都会得到众多社区成员的查阅,因此每项解决方案都能得到点评及回复。

强烈推荐!

在这里,大家能够找到大量针对不同编程语言所设计的思维挑战难题。它们根据不同难度作出了适当的排序,而且整个流程将有40到50道难题为各位设下重重考验。

每一道难题都提供详尽而充分的解释,而且根据我的个人体验,各试题都设定了时间限制——所以不要懈怠,一鼓作气将其解决吧!

Sphere Online Judge (简称SPOJ)是一座包罗万象的宝库,其中的数千道编程挑战试题足以让大家忙上好一阵子。SPOF当中挑战题目的涵盖范围同样广泛,从最基本的编程难题到艰深的算法难关无所不包——后者要求大家具备某些高超的问题解决技巧,例如为NP难题寻找最佳启发式算法。SPOJ允许大家利用所能想到的几乎每一种编程语言作为解题工具,并针对您所给出的解决方案提供反馈意见——其中可能包含一些有针对性的额外提示。

SPOJ背后还拥有一整套令人赞叹的社区(用户数量超过30万),这里的活跃成员们乐于帮助彼此在论坛上解决难题。SPOJ允许用户添加自己的挑战题目、组织编程竞赛并比拼解决问题的能力。无论是新手上路还是从业多年的老鸟,都能够在这里找到适合自己的定位与内容。对大多数用户来说,它提供了一套理想的大型编程竞赛前不可或缺的预热环境。众多理论计算机科学家的加入为这里营造出一种充满激情的编程钻研氛围,但又同时流露出极强的亲和力——大家从该网站的宣传口号就能感受到这一切:“Where Hackers eat Crackers(作黑客,不作骇客——cracker亦有饼干之意,代表这里如下午茶般的惬意气氛)。“

CodeChef由Directi所创建,这里不仅是一个旨在鼓励并挑战开发人员解决难题的社区,同时也为用户提供了一整套实践、竞赛并提升自身技能水平的平台。这里包含有大量供用户解决的挑战题目集合,大家也可以随意查看其他成员在解决这些编程难题时所使用的源代码。

全部挑战题目根据难度不同而作出了具体类别划分,而且该网站本身也拥有一个颇具规模的社区。总而言之,CodeChef是大家磨砺技能、展示身手的良好环境。

如果大家希望向企业雇主及其他同行展现自己的编程功力,那么请以开发者的身份加入到CodeEval当中。在这里,我们可以参与到涉及多种不同领域的竞赛当中,不过大多数比赛目标都设定为构建一款产品/应用程序——并提供现金作为奖励。此外,大家也可以参与其中的编程挑战赛,相信把出色的成绩添加到简历当中足以帮助各位给自己的潜在雇主留下良好的第一印象。

CodeEval网站专注于帮助开发人员立足于技术层面展示自己的个人水平,而且其实际效果也相当值得称道。

HackerRank网站最吸引我的一点在于,他们所提供的挑战试题与人工智能技术高度相关——这不仅是种很酷的发展方向,同时也给高阶程序员们提供了一展身手的良好平台。HackerRank网站拥有着Y Combinator以及SVAngel等企业作为赞助方。总而言之,对个人水平有自信的朋友一定不要错过。

Codewars在组织编程挑战赛方面显然找到了一条极佳的实现途径,而且比赛内容也非常严肃。我费尽心力希望更为全面地帮助大家了解该网站的定位,但相信下面这段长度为十分钟的视频能够更好地展示Codewars的实际作用。

我想大家应该会对Codewars产生兴趣,正如众多已经参与到其社区当中的开发者成员一样。

虽然与前面提到的网站相比,Rosalind选取的方向更有针对性,但这仍然不妨碍它成为一种解决编程难题及学习编程知识的理想的途径。Rosalind提供的挑战题目大多面向生物信息学科,大家可以通过适合自己的节奏在这里展开探索。

大家可以在这里编写自己的机器人,并利用它们同社区内的其他成员彼此对殴!这是一套编程-游戏类型的平台,但对于那些刚刚接触此类方案的开发人员来说仍然颇具现实意义——或者至少能够带来不错的娱乐性体验。感兴趣的朋友不妨点击此处查看官方文档,了解与之相关的细节信息。

Codeforces高度关注每日/每周组织编程挑战活动。大家可以在这里组建自己的队伍、参加编程热身并在站点当中查看谁才是最出色的编程人才。当然,该网站也会频繁主办编程赛事,帮助大家以出色的成绩吸引到潜在雇主的注意。

这套编程挑战平台由Katrina Owen所创立。Exercism平台的关注重点在于以众包方式解决技术问题。在成为该网站的成员之后,大家不仅能够提升自己的思维/计算/编程技能,同时也可以同其他针对我们编程难题给出有价值答复及解决办法的成员进行交流。这确实是种相当不错的自我进修方式,值得大家加以体验。

看起来Kaggle网站的设立初衷更多是在面向专业人士以及具备竞争意识的开发者群体,因为其中的竞赛说明页面确切指出,Kaggle组织的所有比赛都需要缴纳费用才可参与。但尽管如此,如果大家在工作及学习中遇到了难以解决的问题,这里无疑能为您提供极具价值的方案回报。大家也可以在这里找到众多招聘岗位,并通过编程教程保持知识储备的持续更新及核心竞争力。

在CodinGame,我们相信每一位参与者都能够发现编程带来的乐趣。身为程序员,我们知道编程是一种强大的工具,能够帮助自身完成各类创新与创造性活动。虽然涉足编程领域的主因在于激情与冲动,但在此之上,乐趣同样非常重要。因此我们构建出了这样一个融合了编程与游戏的平台。我们的目标是帮助来自世界各地的开发人员——无论其拥有怎样的从业经历或者专业经验——以游戏的方式学习并提升自己的编程技能并找到理想的工作。

以上内容节选自CodinGame网站的官方说明页面,简而言之其关注重点在于编写游戏程序,强调游戏的娱乐能力并以此为出发点帮助我们锻炼自己的大脑。这种定位对于一部分开发者群体可能具有特殊的吸引力。

编程挑战帮助我们锻炼大脑

好吧,我觉得这篇文章的标题起得确实有点俗气——不过也非常写实,毕竟对每一位开发者来说,大脑正是自己最为宝贵的财富。

通过将这些资源汇总到一起,大家将一举获得成千上万道独特的编程挑战试题——也许大家最终能够解决的不过是其中的百分之一,但勿以善小而不为,这仍然值得我们一试。

大家在实际体验过程中,最偏爱以上哪个网站提供的资源?除了清单所列出的资源,相信大家肯定也有着自己的心头所好,请在评论栏中与我们分享您的编程财富储备吧——可别藏私哦!

时间: 2024-08-09 02:20:02

【转载】挑战这十七项编程 锻炼大脑并且提升能力(1)的相关文章

最简单地完成一项编程任务

作者: 阮一峰 日期: 2009年6月18日 下面就是我对"简单原则"的笔记.如果你想最简单地完成一项编程任务,我认为可以从四个方面入手: 1. 清晰原则. 代码要写得尽量清晰,避免晦涩难懂.清晰的代码不容易崩溃,而且容易理解和维护.重视注释.不为了性能的一丁点提升,而大幅增加技术的复杂性,因为复杂的技术会使得日后的阅读和维护更加艰难. 2. 模块原则. 每个程序只做一件事,不要试图在单个程序中完成多个任务.在程序的内部,面向用户的界面(前端)应该与运算机制(后端)分离,因为前端的变化

【转载】-如何写代码-编程智慧

原文地址:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获. 反复推敲代码 既然"天才是百分

[转载]Web前端开发工程师编程能力飞升之路

[背景] 如果你是刚进入web前端研发领域,想试试这潭水有多深,看这篇文章吧:如果你是做了两三年web产品前端研发,迷茫找不着提高之路,看这篇文章吧:如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧: web前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间.这个领域没有学校的正规教育,没有行内成体 系的理论指引,几乎所有从事这个职业的人都是靠自己自学成才.自学成才,一条艰辛的坎坷路,我也是这样一路走来.从2002年开始接触web

转载--提高C++性能的编程技术

读书笔记:提高C++性能的编程技术 第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况下不会开启Trace功能.问题是:怎么设计Trace类,使得在不开启Trace功能时引入的开销最小. 1.2 使用状态变量开关功能 用宏来开关Trace功能很简单,在不开启时开销完全没有: #ifdef TRACE Trace trace("aaa"); #endif 缺点是每次开关都需要重新

[转载]:Delphi xe7并行编程快速入门

现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ Builder和RAD Studio XE7中,有一个简化并行运行任务的库,叫做并行编程库. 并行编程库在System.Threading单元中,其中提供了很多有用的特性,可方便的应用在已有项目和新项目中.提供了大量便利的重载函数,可同时支持C++和Object Pascal. 这些特性包括易用的针

转载:数据结构 二项队列

0)引论 左堆的合并,插入,删除最小的时间复杂度为O(logN).二项队列就是为了对这些结果进一步提高的一种数据结构.利用二项队列,这三种操作的最坏时间复杂度为O(logN),但是插入的平均时间复杂度为O(1). 1)二项队列 二项队列不是一棵树,它是一个森林,由一组堆序的树组成的深林,叫做二项队列. 二项队列有几个性质比较重要 (a) 每一颗树都是一个有约束的堆序树,叫做二项树 (b) 高度为k的第k个二项树Bk由一个根节点和B0, B1, .......B(k-1)构成 (c) 高度为k的二

[转载] 读《UNIX网络编程 卷1:套接字联网API》

原文: http://cstdlib.com/tech/2014/10/09/read-unix-network-programming-1/ 文章写的很清楚, 适合初学者 最近看了<UNIX网络编程 卷1:套接字联网API>, 英文名叫Unix Network Programming啦,后来上网查了查, 一般都叫UNP逼格会高一点, 就像APUE一样. 他们的作者都是W. Richard Stevens. 另外,他也是TCP/IP Illustrated的作者. 靠,看完作者简介,简直崇拜得

转载:Linux 下C编程常用的头文件

头文件主目录include 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章. <a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏. <const.h>:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位. <ctype.h>:字符类型头文件,定义了一些有关字符类型判断和转换的宏. <

【转载】学习C++和编程的几个要点

1.把C++当成一门新的语言学习(和C没啥关系!真的.):2.看<ThinkingIn C++>,不要看<C++变成死相>:3.看<The C++ Programming Language>和<Inside The C++ObjectModel>,不要因为他们很难而我们自己是初学者所以就不看:4.不要被VC.BCB.BC.MC.TC等词汇所迷惑--他们都是集成开发环境,而我们要学的是一门语言:5.不要放过任何一个看上去很简单的小编程问题--他们往往并不那么简