The worldwide smartphone market grew 1.1% year over year in 2016Q3,
with 363.2 million shipments, according to data from the International
Data Corporation
(IDC)
Worldwide Quarterly Mobile Phone Tracker.
Shipments grew 5.2% QoQ, compared to the 345.5 million units in the
second quarter of 2016. IDC expects to see a noticeable slowdown in
smartphone shipments in 2016 with China showing a more mature growth
pattern. Android dominated the market with 86.8% share in 2016Q3.
Samsung continued its global leadership despite the Galaxy Note 7
recall.
Android dominated the smartphone
market with a share of 86.8%. Samsung, the #1 contributor remained in
the top spot, despite the high-profile recall of the Galaxy Note 7.
Android share has risen both YoY and QoQ, with strong growth in unit
shipments by other players such as Huawei, OPPO, and vivo. This
quarter’s launch highlights included Apple’s iPhone 7 and 7 Plus as well
as Google’s Pixel and Pixel XL. iOS saw its market share for
2016Q3 grow by 12.7% QoQ with 45.5 million shipments. The iPhone 6S
followed by its newest model, the iPhone 7 were the best-selling models
this quarter. The iPhone SE and 7 Plus along with its older models
accounted for 53.1% of the total Apple shipments this quarter. Windows Phone experienced a QoQ
decline of 35.2% with a total of 974.4 thousand units shipped this
quarter. With Microsoft’s focus on business users, the decline in the
consumer market is expected to continue.
This diagram shows the percentages of websites using various client-side programming languages. See technologies overview for explanations on the methodologies used in the surveys. Our reports are updated daily.
How to read the diagram: 5.4% of the websites use none of the client-side programming languages that we monitor. JavaScript is used by 94.5% of all the websites.
This diagram shows the percentages of websites using various server-side programming languages broken down by ranking. Cross-technology reports only include technologies with more than 1% usage to ensure statistical significance of the results. See technologies overview for explanations on the methodologies used in the surveys.
How to read the diagram: PHP is used by 82.7% of all the websites whose server-side programming language we know. PHP is used by 79.6% of all the websites whose server-side programming language we know and that rank in the top 1,000,000.
Percentages of websites using various server-side programming languages broken down by ranking Note: a website may use more than one server-side programming language
This diagram shows the percentages of websites using various server-side programming languages. See technologies overview for explanations on the methodologies used in the surveys. Our reports are updated daily.
How to read the diagram: PHP is used by 82.7% of all the websites whose server-side programming language we know.
TIOBE programming community index is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands.[1] TIOBE stands for "The Importance of Being Earnest" which is taken from the name of a comedy play written by Oscar Wilde at the end of the nineteenth century.[2] The index is calculated from the number of search engine results for queries containing the name of the language.[3] The index covers searches in Google, Google Blogs, MSN, Yahoo!, Baidu, Wikipedia and YouTube. The index is updated once a month. The current information is free but the long term statistics over many years of observation is for sale. The index authors think that it may be valuable when accepting various strategic decisions. TIOBE focuses on Turing complete languages, so it does not provide information about the popularity of, for instance, SQL or HTML.
According to the site, TIOBE index is "not about the best programming language or the language in which most lines of code have been written".[4] However the site does claim that the number of web pages may reflect the number of skilled engineers, courses and jobs worldwide.
TIOBE index is sensitive to the ranking policy of the search engines on which it is based. For instance, in April 2004 Google performed a cleanup action to get rid of unfair attempts to promote the search rank. As a consequence, there was a large drop for languages such as Java and C++, yet these languages have stayed at the top of the table. To avoid such fluctuations, TIOBE now uses multiple search engines.
As of August 2016[update]C reached its lowest ratings score since the index was launched, but was still the second most popular language after Java.[5]
The TIOBE programming language of the year award goes to the language with the biggest annual popularity gain in the index, e.g., Go was the programming language of the year in 2016.[6]
Pierre Carbonnelle challenges TIOBE's naming of Objective-C as the "programming language of the year" in 2012, arguing that there may be many Objective-C pages on the web, but they are rarely read. It proposes its own PYPL index instead, based on Google Trends data.[7] It shows popularity trends since 2004, worldwide and for 5 different countries.
Tim Bunce, author of the Perl DBI, has been critical of the index and its methods of ranking.[8]
Question
I'm trying to find places where I can hone my craft outside the context
of school or work. Are there places online, or books available, where I
can access lists of programming puzzles or challenges? Answer
Code Combat - Javascript and Python solo and multiplayer games in the style of a strategy game.
Hacker.org Challenge
— "The hacker.org challenges are a series of puzzles, tricks, tests,
and brainteasers designed to probe the depths your hacking skills. To
master this series you will need to crack cryptography, write clever
code, and dissect the impenetrable; and in the process you will enrich
your understanding of the world of hacking."
Pex for fun — game from Microsoft research where you duel against other programmers
Rankk
— "You start with the easy levels and progress to the intermediate and
hard levels by solving the minimum number of required challenges at each
level. The journey to the top is an arduous yet rewarding one. You need
to be sufficiently determined and persevering to go far. Only a few are
expected to reach the apex and attain Geb."
4Clojure
(Clojure) — "4Clojure is a resource to help fledgling clojurians learn
the language through interactive problems. The first few problems are
easy enough that even someone with no prior experience should find the
learning curve forgiving. See 'Help' for more information."
Prolog Problems
(Prolog) — "The purpose of this problem collection is to give you the
opportunity to practice your skills in logic programming. Your goal
should be to find the most elegant solution of the given problems.
Efficiency is important, but logical clarity is even more crucial. Some
of the (easy) problems can be trivially solved using built-in
predicates. However, in these cases, you learn more if you try to find
your own solution."
Python Challenge (Python) — "Python Challenge is a game in which each level can be solved by a bit of (Python) programming."
Ruby Quiz
(Ruby) - "Ruby Quiz is a weekly programming challenge for Ruby
programmers in the spirit of the Perl Quiz of the Week. A new Ruby Quiz
is sent to the Ruby Talk mailing list each Friday."
IOCCC
(C) - "A contest to write the most obscure/obfuscated C program. (Fun
to try to understand the previous year's entries, or to submit a new
one.)"
Underhanded C Contest
(C) - "contest to turn out code that is malicious, but passes a
rigorous inspection, and looks like an honest mistake. (Try to
understand previous year's entries, and learn to find similar mistakes
in other people's code)"
CheckiO - Python programming challenges. Custom "Missions" can be created by members.
Online judges / automatic assessment
Codingbat has lots of coding challenges ranging from warm-ups to Harder recursion problems. It is available in Java and Python.
Cyber-dojo has a nice variety of katas and supports a good selection of languages. It is intended to support doing deliberate practice of TDD, but could be used for personal development too.
Quizful -
interactive programming quizzes in "Duolingo style".
This site looks fun and has a good set of questions, at least in Java.
Plus, as they say, it has adaptive learning algorithm, that makes
learning more effective.
exercism - Challenges in more than 30 languages that will be evaluated automatically.
A great
way to improve your skills when learning to code is by solving coding
challenges. Solving different types of challenges and puzzles can help
you become a better problem solver, learn the intricacies of a
programming language, prepare for job interviews, learn new algorithms,
and more.
Below is a list of some popular coding challenge websites with a short description of what each one offers.
TopCoder is one of the original platforms for competitive programming online. It provides a list of algorithmic challenges
from the past that you can complete on your own directly online using
their code editor. Their popular Single Round Matches are offered a few
times per month at a specific time where you compete against others to
solve challenges the fastest with the best score.
The top ranked users
on TopCoder are very good competitive programmers and regularly compete
in programming competitions. The top ranked user maintains his own blog titled ALGORITHMS WEEKLY BY PETR MITRICHEV where he writes about coding competitions, algorithms, math, and more.
Project
Euler provides a large collection of challenges in the domain of
computer science and mathematics. The challenges typically involve
writing a small program to figure out the solution to a clever
mathematical formula or equation, such as finding the sum of digits of all numbers preceding each number in a series.
You
cannot directly code on the website in an editor, so you would need to
write a solution on your own computer and then provide the solution on
their website.
HackerRank
provides challenges for several different domains such as Algorithms,
Mathematics, SQL, Functional Programming, AI, and more. You can solve
all the challenge directly online (check out this example).
They provide a discussion and leaderboard for every challenge, and most
challenges come with an editorial that explains more about the
challenge and how to approach it to come up with a solution. Aside from
the editorial, you cannot currently view the solutions of other users on
HackerRank.
HackerRank also provides the ability for users to submit applications and apply to jobs by solving company-sponsored coding challenges.
Coderbyte provides 170+ coding challenges you can solve directly online in one of 10 programming languages (check out this example).
The challenges range from easy (finding the largest word in a string)
to hard (print the maximum cardinality matching of a graph).
They also provide a collection of algorithm tutorials, introductory videos, and interview preparation courses.
Unlike HackerRank and other similar websites, you are able to view the
solutions other users provide for any challenge aside from the official solutions posted by Coderbyte.
CodeChef is an Indian-based competitive programming website that provides hundreds of challenges. You are able to write code in their online editor
and view a collections of challenges that are separated into different
categories depending on your skill level (check out this example). They have a large community of coders that contribute to the forums, write tutorials, and take part in CodeChef’s coding competitions.
CodeEval
is similar to HackerRank where it also provides a collection of
company-sponsored coding challenges that can help you get a job if you
solve them well. Companies can create challenges and host competitions
to recruit new developers for work. You can see a list of current
challenges here.
Codewars
provides a large collection of coding challenges submitted and edited
by their own community. You can solve the challenges directly online in their editor in one of several languages. You can view a discussion for each challenges as well as user solutions.
LeetCode is a popular Online Judge that provides a list of 190+ challenges that can help you prepare for technical job interviews. You can solve the challenges directly online
in one of 9 programming languages. You are not able to view other users
solutions, but you are provided statistics for your own solutions such
as how fast your code ran when compared to other users.
They also have a Mock Interview section that is specifically for job interview preparation, they host their own coding contests, and they have a section for articles to help you better understand certain problems.
Sphere Online Judge (SPOJ) is an online judge that provides over 20k coding challenges. You are able to submit your code in an online editor. SPOJ also hosts their own contests and has an area for users to discuss coding challenges. They do not currently provide any official solutions or editorials like some other websites do though.
CodinGame
is a bit different from the other websites because instead of simply
solving coding challenges in an editor, you actually take part in
writing the code for game that you play directly online. You can see a
list of games currently offered here and an example of one here.
The game comes with a problem description, test cases, and an editor
where you can write your code in one of 20+ programming languages.
Although this website is different than typical competitive programming websites such as the ones mentioned above, it is still popular amongst programmers who enjoy solving challenges and taking part in contests.
This list was based on a few things: my own experiences using the websites, some Google searches, Quora posts, and articles such as this one and this one. I also frequented some forums and subreddits such as r/learnprogramming
to see what websites were usually recommended by the users there.
Disclaimer: I work at Coderbyte which is one of the websites mentioned
above.