
Python is becoming the world’s most popular programming language - miohtama
https://www.economist.com/graphic-detail/2018/07/26/python-is-becoming-the-worlds-most-popular-coding-language
======
legostormtroopr
As a huge fan of Python, my go-to statement is that Python is the second or
third best language for whatever you want to do.

Want to do web server development? Flask, Django, Tornado, etc... can do that.
Probably not as concurrently as Go, but it'll do.

Scientific computing? Its no Matlab, but the syntax is easy and the time you
lose in processing you make up for when developing.

Desktop computing? PyQT is pretty good. Electron may be faster to build with,
C will be faster at runtime, but Python, even with Tkinter, is ok.

Functional programming? There are list comprehensions, map, reduce and filter.
Not as good as Haskell or Lisp, but it'll do.

Python isn't the killer language for any of these really, but its good enough
in almost all cases that you'll be very productive and can iterate to a good
MVP quicker than with most other languages.

~~~
dazzawazza
For me python's killer feature is readability years later.

I've gone back to websites and tools YEARS later and the code as quick to
pickup and easy to modify.

35 years of programming and I've never met a language so well integrated with
my mind.

~~~
mazesc
Any language with static types should be easier to make sense of, though. I
get it's faster to write dynamically typed code, but your point is
specifically about reading code, which I can't follow.

Of course Python nowadays has support for static types too.

~~~
weberc2
I program in Python professionally, and I agree with your sentiment in
general. Dynamic types hurt readability. Also, in general, Python is faster to
develop with than most statically typed languages. There are two nits that I’d
like to pick: the first and lesser is that Python’s static typing story is in
an alpha stage. It’s not ready for prime time (but I’m cheering it on) and
Python shouldn’t be considered as having a static type system yet.

The second is that I realized that Go is a statically typed language that is
quite a lot easier to develop with than Python and other dynamic languages. It
strikes a good balance between protecting you from mistakes while not making
it hard to express your intent (most of the time, anyway). As I advance and
become more concerned about my time, I find myself reaching for Go more often
because the static type system has my back. I spend less time writing unit
tests or iteratively running my code to make sure things still work. (People
said this about Haskell and Rust and OCaml too, so I understand the skepticism
dynamic language proponents have for claims like these). The deployment,
dependency management, and performance stories are also quite a lot nicer in
Go, and these are undervalued components of “developing velocity” as well,
especially if you’re on a small team. It really changes the calculus for
static vs dynamic language discussions.

------
qalmakka
Languages have always come and gone; Python has always mattered, it's simply
finally showing itself as a much more suited tool for certain tasks (such as
CS education, lightweight scripting by data scientists, glueing together large
frameworks, ...). While popular, it can't really hit every single spot
required in software development; try to maintain > 10k LOC codebases in
Python to understand what I mean.

The point that I'm trying to say is that, while we're living in a moment where
python is at the center of everything, it won't last forever; it never does.
Something better always shows up, given enough time.

~~~
stevesimmons
> try to maintain > 10k LOC codebases in Python to understand what I mean

Lots of companies successfully manage far larger Python codebases.

We have a 35M LOC Python codebase with 2500 active developers making 25000
commits per week and continuous deployment globally of new code.

(I gave a talk on it at PyData London in April: "Python at Massive Scale")

~~~
collyw
Is there a quick way to find out your LOC in a python project? Does it include
whitespace and comments? What about HTML and JS code?

~~~
rusk
The typical measure is “Source Lines of Code” (SLOC), which would be
calculated on a per-language basis and doesn’t include comments or blank
lines. You’d sum these together for your codebase overall. Not sure how you’d
do it for HTML or mixed code. Presumably the same since it’s such a rough
measure that that level of accuracy really doesn’t matter.

------
a_imho
_With such a rapidly growing user base and wide array of capabilities, Python
might seem destined to become the lingua franca of coding, rendering all other
competitors obsolete._

I realize it is weasel worded not to mean what it implies but statements like
this is a surefire way to lose any credibility. Not that there was much
underpinning besides some search engine popularity.

Nevertheless I'm baffled by python's popularity. With my admittedly limited
exposure I would not reach for it again any time soon. When it is the right
tool for the job?

~~~
FabHK
How does that make The Economist "lose any credibility", when the _very next
sentence_ is

> That is unlikely, according to Grady Booch, IBM’s chief software scientist,
> who compares programming languages to empires.

------
zmmmmm
I understand it (and code a hell of a lot of Python) - but it's a shame. While
it's a lot better than the many low-barrier-to-entry languages that came
before it, it is such a heavily compromised, suboptimal language in so many
ways. I feel like a whole generation of programmers is becoming stuck in a
local optimum that will cost us very dearly later on.

~~~
batty_alex
While you're likely correct that FORTRAN, COBOL, C, Visual Basic, C++, Perl,
ColdFusion, Java, Javascript, and Python, were sub-optimal choices, they're
just tools whose popularity boils down to current programming pop culture.

That being said, it could be something much worse than Python.

~~~
senorjazz
When ever you start feeling like this, just think to yourself how bad things
would be if it was javascript that won and was used everywhere...

oh wait :(

------
sathishvj
I can see the sudden jump in popularity for python alongside data science - it
really is great for that.

My view is: python is great for offline tasks, like functional testing and
training in machine learning - tasks that do not have huge, direct customer
interaction. But to put something in production, please give me a strongly
typed language with compiled binaries and no additional installations/VMs (and
for me that's Go).

~~~
ubernostrum
Python is strongly typed, insofar as the term has a meaningful definition at
all.

You meant "give me a statically typed language". Which may not actually be
what you want, since statically typed languages can be, and some historically
have been considered, weakly typed (C, for example).

~~~
sathishvj
doesn't strongly typed mean that the type cannot change once assigned? and you
can do that in python, can you not?

~~~
ubernostrum
No, again you're thinking of "static", not "strong".

Strong versus weak is historically poorly defined, and there's no single
universally-accepted definition, but you can get the gist of it from
considering the following:

    
    
        a = '1'
        b = 2
        c = a + b
    

In JavaScript, the above code results in the name 'c' being bound to the
string value '12'. In Python, the above code raises TypeError. Generally,
"weak" typing refers to the idea that the language may coerce the values of
operands to other types in order to make an operation succeed (in the above,
JavaScript coerced the value of 'b' to a string and interpreted the '+'
operator as asking for string concatenation, hence the result is the string
'12'). "Strong" typing generally means the language won't do that, and will
error out on you if you attempt an operation on values of incompatible types.

"Static" versus "dynamic" typing is a completely different set of terms.
There's also some debate over definitions, but broadly, consider the following
expression:

    
    
        a = 1
    

In a statically-typed language, both the name 'a' and the value 1 have types,
and in order to bind names to values their types must be compatible. So in the
above, it's likely that both 'a' and 1 are of type int, so the assignment
expression would be legal. Later attempting to bind 'a' to a value of a type
incompatible with int (say, 'a = "foo"') would fail. Statically-typed
languages also come with an expectation that all expressions can be checked
for compatible types without needing to execute the code, and that a tool will
exist to do this checking for you.

In a dynamically-typed language, however, only values have types; names do
not, so binding a name to a value of a particular type does not foreclose
later re-binding to a value of a different type (i.e., the name 'a' might be
bound to an int now, and get re-bound to a string later). This means there
will be cases in a dynamically typed language where the only way to verify
correctness of an expression is to execute the code (though you can usually
check a high percentage without running the code).

Python is strongly typed and dynamically typed.

------
diminoten
Having worked in Python as a way to pay for food nearing 7 years now, the
biggest complaint I have at this point is that, at an enterprise level, it's
severely under-equipped to enforce its touted "There's probably one right way
to do things" mantra.

People are often introduced first to Python by way of scripting, but the
tricks and tools learned while scripting are exactly the sorts of things I've
found cause dirty code. Applying clean code principles to Python is _hard_ ,
because it's so easy to write dirty code, and that's a byproduct of how easy
everything is to do in Python. That ever-nagging "but it's working" continues
to get in the way.

It's a weird problem. I dunno what to do about it, and currently end many of
my debates with colleagues on topics related to the problem without agreement.

~~~
ubernostrum
_People are often introduced first to Python by way of scripting_

I don't believe this is true, and I don't believe it's been true for quite
some time.

First encounters with Python now tend to be via frameworks, whether for web
development, machine learning, data science or automation.

~~~
diminoten
It was true recently enough ago that the people writing Python code
professionally were introduced to Python from a scripting entrypoint.

For non-programmers, I think it's definitely still true that "scripting" is
their primary use case for Python, and when those non-programmers shift into
software development jobs because they have "3 years experience" with Python,
they bring all of their bad habits with them.

------
bsimpson
At the bottom of the page, there's a link to "the full article":

[https://www.economist.com/science-and-
technology/2018/07/19/...](https://www.economist.com/science-and-
technology/2018/07/19/python-has-brought-computer-programming-to-a-vast-new-
audience)

It's fascinating to see the differences between the two. The OP is a bit
shorter and a bit more awkwardly worded. It also inlines some names (for
instance, referring to the package manager as "an online repository" instead
of "the Cheese Shop").

I wonder if the OP was written for the website (with a lower quality
threshold) and the "full article" was edited/expanded-upon for the more
prestigious print edition.

------
jschulenklopper
Here's a nice combination of _Python_ and an _economist_: Paul Romer, this
year's Nobel prize laureate in economy, moved from publishing recent research
using Mathematica to Python and Jupyter notebooks.

[https://qz.com/1417145/economics-nobel-laureate-paul-
romer-i...](https://qz.com/1417145/economics-nobel-laureate-paul-romer-is-a-
python-programming-convert/)

------
moomin
StackOverflow has the data on this: Python for most purposes is entirely
static. Python for data science is utterly dominant. That’s what’s driving the
stats.

------
accrual
Non-canvas fingerprinting summary: [http://www.blog.pythonlibrary.org/wp-
content/uploads/2018/10...](http://www.blog.pythonlibrary.org/wp-
content/uploads/2018/10/econo_chart_py.png)

I found the data points coarse (x = 5 years) but useful to see similar trends
of popularity between C, Javascript, and Python. Note: these metrics are
defined by global search engine popularity.

~~~
yellowapple
I wonder if those statistics are accounting for people searching for snakes.

~~~
sumedh
Took me a while to figure out what you mean by snakes, I thought what do
snakes have to do with programming languages then it bit me.

------
qualsiasi
Python is really widespread, but at least in my company it's used for analysis
and prototyping only. Then the prototype is ported either to Java, C# or C++.

I don't know if it's common practice, but we work like that and totally makes
sense to us.

~~~
metildaa
Depends on the organizations needs, for what we work on performance does not
matter terribly much, thus a MVP in Flask is often cleaned up and put up on
Gitlab (with a Github mirror) once its vaugely usable.

------
nuttymoon
How do you compare the popularity of full featured languages like Python to
languages like JavaScript that have numerous frameworks built upon. Were
React, Angular, Vue, Typescript search results taken into account to draw this
graph ?

~~~
easytiger
In your reductive analysis x86 ASM is the most popular language or every
Python application is a c application.

~~~
posamari
That’s not the point. Many JS devs google “Node xxxxx” but still code with JS.
Not many people search for “Python xxxxx” and code in C.

Offtopic: I disagree with grandparent, for different reasons.

~~~
easytiger
Many people google "boost graph library" but are c++ developers or google
"pandas how to drop columns", "numpy how to append to array" but are python
developers.

~~~
posamari
I still don’t see how this leads to

> x86 ASM is the most popular language or every Python application is a c
> application

~~~
easytiger
He states people using typescript count as people using javascript. If that is
true people writing python or c++ are writing ASM

~~~
jeremychone
Not really. TypeScript is just a JavaScript superset, and developer code JS
with all its good and bad with some annotation types. TypeScript is not like
Dart or reasonML for which your analogy would have been correct if someone
said Dart count as JavaScript.

------
anonu
This is a shorter version of this July 19, 2018 article:
[https://www.economist.com/science-and-
technology/2018/07/19/...](https://www.economist.com/science-and-
technology/2018/07/19/python-has-brought-computer-programming-to-a-vast-new-
audience)

------
village-idiot
A few jobs ago was in Python. Joy to write, absolute terror to deploy.

Seared into my mind was a failure caused by delivering .pyc files (oops) to a
server whose shared libs were compiled with different flags than our CI box.

To be fair, this was before docked (or at least before I’d heard of it). Maybe
that’s improved things a bit.

~~~
mywittyname
Deployment is still mostly awful. The community is still tackling this issue
as of 2018.

[https://realpython.com/pipenv-guide/](https://realpython.com/pipenv-guide/)

~~~
village-idiot
It's a shame. I rather like the language, but failing to fix the deployment
story for this long is frankly unacceptable.

------
jokoon
Well now we have to wait for a v8 equivalent for python. I guess pypy doesn't
really make python that much faster, can it be faster?

~~~
bakery2k
Python is, despite its simple appearance, a _much_ more complex language than
JavaScript. A V8 equivalent for Python is certainly possible, but would
require even more work than went into creating V8 itself - who would be
motivated to spend that much effort on Python?

Dropbox? They seem to be the company driving Python nowadays, but gave up
trying to speed up Python in favour of writing "performance-sensitive code in
other languages" [1].

PyPy uses a meta-tracing approach in an attempt to reduce the amount of work
required. Its speed is impressive, but I'm sure meta-tracing leaves some
performance on the table.

Another way to reduce the amount of work required would be to support only a
subset of the language - for example, a V8 equivalent for MicroPython rather
than for full Python. I'm sure this could be made very fast, but it would have
very poor compatibility with existing Python code, so what would be the point?

[1] [https://blog.pyston.org/](https://blog.pyston.org/)

~~~
jokoon
What makes python so complex? What are the features that if removed could
really improve performance?

I love python's syntax, but I could do without its lazy interpretation,
without duck typing if possible, and without its reference system.

In short I just like the syntax of python, I don't really care about its
modules.

~~~
bakery2k
I have replied to your post on /r/Python [1].

[1]
[https://www.reddit.com/r/Python/comments/9n18ot/ive_read_abo...](https://www.reddit.com/r/Python/comments/9n18ot/ive_read_about_python_and_how_its_a_complex/)

------
cm2187
It’s interesting that by this metric, vb.net beats javascript. It’s remarkable
for a language which maintainers have placed in maintenance only mode.

I think it is a language that people should consider for beginners. Rich and
helpful IDE, easy and permissible syntax (english keywords rather than
symbols, case insensitive, optional parenthesis). You can do pretty much
anything with it (console, desktop, website). And it provides an upgrade path
to business users which only programming skills are usually toying with VBA
macros.

------
Swizec
Wait wasn’t JavaScript supposed to be most popular? Every device in the world
shipping with at least one environment for JS?

Or does it not count because you don’t distribute binaries?

~~~
martinsbalodis
I was thinking the same thing. Their google search language comparison is
probably incorrect. For example no one includes the keyword "javascript" when
searching for nodejs or react. Instead they should have used Stackoverflow's
developer survey results.

From an article that analyzes Stackoverflow's developer survey results[1]:

    
    
      1. JavaScript
      2. HTML
      3. CSS
      4. SQL
      5. Java
      6. Bash/Shell
      7. Python
      8. C#
      9. PHP
      10. C++
    

[1] [https://www.businessinsider.com/14-most-popular-
programming-...](https://www.businessinsider.com/14-most-popular-programming-
languages-stack-overflow-developer-survey-2018-4)

~~~
cm2187
But nodejs and react aren’t programming languages. No one is including “c#”
when searching for spreadsheetgear, asp.net or wpf even though they are .net
libraries and frameworks.

~~~
TeMPOraL
Precisely the point. If you don't count searches for popular libraries and
frameworks into their respective language buckets, the results are mostly
bullshit, and at best probably reflect the undergrad curriculum.

------
asien
Never been a fan of Python , but all the comments about Java are legit.

I’m a big Java User mostly for Enterprise Apps & Services. A third of my code
is boilerplate, Python really shine when it comes to making stuff concise but
in the same way not having type is something that has always bothered me.

Dynamic typing is something I have accepted with JavaScript but for Python for
some reason it has always bothered me...

~~~
a3n
Python is a strongly typed language.

[https://duckduckgo.com/?q=python+strongly+typed&t=fpas&ia=qa](https://duckduckgo.com/?q=python+strongly+typed&t=fpas&ia=qa)

~~~
meepmorp
Strong typing and dynamic typing are not mutually exclusive.

~~~
a3n
Exactly my point.

~~~
meepmorp
Sorry, I misunderstood. I thought the OP’s reference to dynamic typing was
what you were referring to, but they were actually the ones confusing static
with weak typing.

------
ts330
Just because people are searching for it doesn't mean it's popular. It means
people are trying to answer a question about it. I'd posit there is more of a
correlation between searches and newusers/issues/problems with the
tool/language than how much it's being used. Stack Overflow is a better source
for these stats anyway.

------
kjullien
I learned development with Python (after trying to grasp the concepts of C for
a while) and I have to say that alongside .NET it is one of the easiest
languages I had the pleasure to work with. So much so that after 10 years of
mainly Javascript and Node.js work I have decided to go back to Python simply
to make my life easier and be more productive.

------
iliaznk
Python is great, I just wish it had JS-like object destructuring applied to
dicts – so convenient!

~~~
rataata_jr
If you can think it, it can be done. There is probably a library for it. It is
just not standard.

~~~
iliaznk
That I have no doubts about, but having it in the standard lib would be
awesome!

------
casper345
Question: How is python on more mechanical systems, like robotics in such?
Will we see a migration there besides web env?

------
amirmasoudabdol
I found it funny/interesting that the title called it "coding" instead of
"programming" language!

~~~
gaius
Yes, you can imagine the author of the article saying Nikon is the best for
clicking, or that Gordon Ramsey is the best at chopping.

------
Jenz
While pythons popularity is undeniable, Im sceptical to the article as it’s
based on the TIOBE index.

------
RickJWagner
I'm not surprised.

Python is a very easy language to learn and use. In the end, ease of use
always wins.

~~~
puranjay
I picked up Learn Python the Hard Way. Really enjoyed it. Was super easy even
for someone new to programming.

But got lost when I reached the OOP part. This speedbreaker, along with a few
other distractions effectively eroded my enthusiasm for coding

------
devit
Is it really?

Seems unlikely Python can be more popular than JavaScript/TypeScript since
they are equivalent to Python and have the critical advantages of working on
the web (and thus being known by all web developers) and having optimized
engines in web browsers.

~~~
goatlover
The computing world is a lot larger than the web, believe it or not. Python is
huge in scientific computing, and is used for lots of server-side scripting.
JS/TS don't have much of a presence in scientific computing beyond the web
presentation layer, which can be generated from Python libraries. Python is
used everywhere in science, and the ecosystem is incredibly rich.

------
miohtama
Non-paywalled summary [http://www.blog.pythonlibrary.org/2018/10/09/python-
worlds-m...](http://www.blog.pythonlibrary.org/2018/10/09/python-worlds-most-
popular-language-in-2018/)

~~~
Dowwie
Hey Mikko!

------
hyperion2010
I started programming in python in 2010. It has been a good tool for solving a
variety of problems.

I do have to wonder though. Is python popular right now because so many more
people who have never programmed before are now starting to program?

I came from a biology background and my hatred for matlab following one
quarter of exposure was sufficient to push me to python because that was what
was offered as an alternative (taught by a gradstudent rather than the guy who
funded the lead dev for the Octave project). There was no other choice. Julia
didn't exist etc.

In the 8 years since I have written a lot of bad code have come to very much
dislike python (though I still write it daily). The reason is not because of
any of the visible failings of the language. It is due to the deep hidden
inconsistencies, and unexpected and unpredictable behavior of the runtime (try
using list comprehension in class scope (What is class scope you ask? Well.
Python is a language for newbies... so by the time you can ask this question
you are too invested to realize that you might have made a bad decision)).

Python is kludge on top of kludge without the diversity of implementations to
take another path when someone calls bullshit. Python can get away with it
because they have runtime hacks that let you sort of do what you want, but
there will be a corner case that doesn't work because there is some unspoken
and undocumented assumption that you are violating and will be duly punished
for.

None of this is the language's fault. It's the runtime's. The python runtime
(don't even bother with discussion about the GIL, which is a red herring and a
bad case of Stockholm syndrome at the same time) is a mess. The language is
fine, even great. But the fact that different scopes have radically different
meaning and that expressions only work in certain scopes [0] is a complete
nightmare.

My main emotional interaction with python is that if I follow the BDFL
approved path, everything will work. If I stray from the fascistic
predetermined happy path, good luck to me, I was on the wrong side of history
TM. 99% of the code that I write that doesn't start as a class I end up
rewriting as a class (probably because python doesn't have closures ...).
Python lures you in with promises of easy to write easy to read, but when you
get to that point where your actions are _no longer approved_ then then pain
and sadness and rage are all you have left. I won't name the language that has
almost the opposite interaction that I come to vastly prefer, but the
emotional experience is radically different, I get extremely frustrated
because I don't understand something in that language, and eventually come to
realize it is because I did not understand something simple. In python I
initially think that I am the one to blame, but after months or years, I
finally realize that it is actually the language that is fundamentally broken
and inconsistent and I have been mislead the entire time. I get frustrated
because there no possible way for me to solve my problem by increasing my
knowledge, I would literally have to fix a 4+ year old problem in the language
(which I'm sure I couldn't do and that I'm sure has not been done for very
good technical (debt) reasons), or find a library. There are a lot of
libraries, but don't be fooled. Every library is a new language. Python is
just the gatekeeping runtime.

Python will thrive for a large set of use cases, but when you hit a wall in
python, the problem is not because you don't understand, it is because python
is broken. That is not a happy realization. It is like growing up and
realizing that people are actually evil, not that you were just
misunderstanding them. Or more generously, that expecting people to be on
their game 100% of the time is unrealistic. The difference is that python is
that attractive person that is great at first impressions, but a disaster in
the long term, and if I hadn't had the good fortune to meet a language that
was super awkward for the first 6 months or so, but turned out to be a keeper,
I'd believe that python was the only thing there is.

Python is and abusive language, and probably exists and is successful because
things like perl also exist (and because it solves a whole bunch of practical
problems). I'll keep using python for a long time, and the coming of age of
pypy brings me great hope for the future, but there are classes of problems
where I now go elsewhere. There are problems everywhere, but in some places
they seem to be rational rather than contingent.

tl;dr Don't pick a language, pick a runtime.

0\.
[https://github.com/ipython/ipython/issues/62](https://github.com/ipython/ipython/issues/62)

~~~
restalis
_" a language that was super awkward for the first 6 months or so, but turned
out to be a keeper"_

I wonder, do you consider the language's awkwardness somehow related to its
quality? Do you see it as a prerequisite to avoiding language shortcomings?

~~~
hyperion2010
No. In this case that part of the analogy is actually not apt at all. To use
another bad analogy I think my point is that the feeling awkwardness actually
comes from the fact that I was doing the equivalent of holding the hammer by
the head and trying to pound nails, only to later realize that I should have
been holding the handle, and that there actually was a handle. In python it is
like having a sledge hammer that you can't possibly hold by the head, but that
no matter how hard you try you keep putting holes in the wall when you try to
hang a picture.

Someone will say 'but why not use the tack hammer?' and, at that point I
argue, I am no longer using python the language, but a whole new language that
happens to look like python but that has a different runtime and a different
set of assumptions. This even happens inside of the core language where `[d(a)
for a in b if a == c]` can be valid in some scopes but not in others. The
other language does the opposite, it says "you can't do that" and so I try to
hold the hammer by its head and think that it is the language that is awkward
because I don't know how to use it and that there is an fact a nail gun that
is configurable along every dimension from nail diameter, to nail length, to
insertion speed and pressure profile over the whole insertion timecourse, it
is just not there in plain sight and I the first few times I used it I
accidentally nailed my feet to the ground with railroad spikes.

I guess it is more that every time I learn more about python it is about what
I have to NOT do in order to be safe. In the other case I learn what TO do in
order to solve the problem the way I want to. Maybe the clearest example I can
think of is lambda, where you have something that looks like a lambda, but
that doesn't doesn't even work like the def (): that it copies due to the
biases of the language designer. Honestly it would be better if Python just
removed all the syntactic features that don't have generalized runtime support
because that way you don't have to know which features you can use where.
Sure, there is a use case for lambda in certain contexts, but if Python
refuses to support lambda as a general abstraction that I can use everywhere,
then it should be removed from the language, because including it leads to
those hidden inconsistencies which require an enormous memory burden on the
developer just to know what is not allowed. That is dead knowledge that in no
way empowers and enriches the programming experience.

In essence the push for pythonic code is not just about maintainable code, it
is about keeping people on the happy path without removing delimited
abstractions, which is fine, except that the explicit solution to this problem
would be to have `from __i_know_what_im_doing__ import lambda, comprehensions`
so that the core language didn't misleadingly offer these delimited
abstractions. Of course this means that many of my favourite features would be
thrown out until some core technical challenges were resolved.

------
pinoytambayan
What about Asp.net?

~~~
romanovcode
It's not a language

