TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Why is everything in JavaScript changing so fast?

206 点作者 blohs超过 8 年前
Change and variety of options is a good thing, but in js the rate of change in methodologies, frameworks, libraries is so much high. For example angular 2 is not compatible with angular 1, so before you even learn a framework its API is different and when you finally learn it, probably is considered outdated. Why is this happening especially in js?

56 条评论

lacker超过 8 年前
The open-source-JavaScript community right now is just the largest, most active open source community that has ever existed. Check out the stats that GitHub recently announced:<p><a href="https:&#x2F;&#x2F;octoverse.github.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;octoverse.github.com&#x2F;</a><p>Open source JavaScript activity as measured by pull requests has doubled (!!) in the past year. It&#x27;s more than the next two languages (Java and Python) combined.<p>Most of the top repositories on GitHub are JavaScript too: <a href="https:&#x2F;&#x2F;github.com&#x2F;search?q=stars:%3E1&amp;s=stars&amp;type=Repositories" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;search?q=stars:%3E1&amp;s=stars&amp;type=Reposito...</a><p>Demand for JS developers is growing too, as websites become more complex, Node.js becomes more popular on the backend, and frameworks like React Native (more popular than any other iOS or Android library on github) start to pick up mobile developers.<p>JavaScript performance is also starting to be significantly better than the other scripting languages, e.g. <a href="https:&#x2F;&#x2F;www.quora.com&#x2F;Is-JavaScript-v8-faster-than-Python" rel="nofollow">https:&#x2F;&#x2F;www.quora.com&#x2F;Is-JavaScript-v8-faster-than-Python</a> . Not because of anything inherent about JavaScript, more that it&#x27;s worth a lot of investment from big companies in JS performance.<p>Basically, it&#x27;s not just the number of frameworks. Everything about JavaScript is taking off right now, and leading to a network effect where all the other aspects get boosted too. Sort of funny to have this happen twenty years after its invention.
评论 #12758773 未加载
评论 #12766465 未加载
评论 #12758533 未加载
评论 #12761385 未加载
bloomca超过 8 年前
The problem is that everything in JS exploded during just few years (Node was published in 2009), and it took few years to build tooling around Node to start utilising all this power.<p>And then everyone started to build &quot;rich&quot; web applications (it is called differently every year), with the &quot;best&quot; tool existing. I personally see two major problems – usually cool startups who can afford using the bleeding edge will die soon (or will get enough money to completely rewrite it), so &#x27;maintanence&#x27; in idiomatic way doesn&#x27;t work here – life cycle is extremely small, and it reflects in the way libraries are written in JavaScript. Also, the barrier is low, and therefore we have a lot of complex websites built by novices, running in development mode in the actual production.<p>Community also is very &quot;poisoned&quot; with the idea that you _have_ to work in your evenings (contributing to OSS, writing your own or just playing with hot technologies), and therefore new stuff is baked extremely quickly. It is usually very low quality, and you have to cope a lot in order to make it work, and often you have to dive into source code, and it is considered as normal, which is quite sick from my point of view.<p>Also, it is truly &quot;hype&quot; community, which is super excited about what is hot now – and it means that today kings will be overthrown very soon (right now stuff like Cycle.js and Vue.js is gaining traction). Nobody wants to maintain their libraries – and very often you can see projects with a lot of stars completely abandoned.<p>Recently, Babel.js was defined as _defacto_ standard, and it basically started transpiling era, which is not going to end in the foreseeable future. It shakes the stability, and makes extremely easy to add new features (like stage-0), and people just used to unrealiable tools.<p>So, all of this works as a snowball, which only speeds up. People create more and more complex web applications, and also js is going into other fields (like microcontrollers, Node.js grows in popularity, React Native is super hot now). When it will stop? Nobody knows. Maybe WebAssembly after implementing will stop it (people will spread over competing technologies), maybe no.
评论 #12761591 未加载
评论 #12761360 未加载
评论 #12762913 未加载
评论 #12761022 未加载
评论 #12761415 未加载
评论 #12760890 未加载
评论 #12762634 未加载
评论 #12762947 未加载
nickstefan12超过 8 年前
In an industry without a guild &#x2F; license &#x2F; what have you, the incentives skew towards articles of proof. Articles of proof could be demo websites, screen shots, and open source libraries.<p>Being the creator or top two contributor of a library is now worth so much more than being a small time contributor that the incentives are skewed towards everyone just making a new thing, always.<p>It&#x27;s their way to stand out.<p>So why is this more prevalent in JavaScript? Front end inherently has more new comers. Long time hackers or cs grads feel less of a need to prove themselves making free software?<p>I think it&#x27;s natural that the web programmers would understand web self promotion better than other languages. Guess who&#x27;s better at Twitter? The js people! Why? They were writing the web to begin with!<p>I wish it would stop. Our qa engineer is writing web driver tests in JavaScript and I don&#x27;t understand why! There&#x27;s nothing about testing that NEEDS to be async! The python API would likely be no slower and much easier to write and debug.<p>Sane defaults are an important part of tech, and default async is a terrible setting. Python sync is easier, and Go routine concurrency is easier. Always on async just seems like a terrible default. For speed I&#x27;d do Go, and for all else Python.
评论 #12765008 未加载
评论 #12759714 未加载
评论 #12759947 未加载
评论 #12758860 未加载
评论 #12761566 未加载
评论 #12758603 未加载
评论 #12758777 未加载
评论 #12758604 未加载
dandare超过 8 年前
The answer is bit paradoxical: It is because JavaScript itself can change only very slowly. What you see changing is everything around JS but JS itself, while powering the whole web, is still to an extent the same scripting language that Brendan Eich prototyped in 10 days back in 1995. Why is that? Simply because the JS runtime environment - the browser - is not controlled by a single entity that could plan and enforce radical change. Instead all the big players have to progress together, which is usually not in the interest of all of them at the same time (It used to be Microsof who was not interested in progressing the web standards, now it seems to be Apple. Not because they are bad people but because it makes sense in their situation.) Plus you have to maintain backward compatibility with older browsers, one can still not simply use ES6 in production website because it would not work in significant portion of the (older) browsers. That is why everything around JS changes so fast in an attempt to find the best workaround, polyfil, transpiler, module etc.
评论 #12760615 未加载
combatentropy超过 8 年前
Is it because it lacks a shepherd?<p>Perl has Larry Wall. Python has Guido van Rossum. PHP had Rasmus Lerdorf and later Andi Gutmans and Zeev Suraski (Zend). Ruby has Yukihiro Matsumoto, and Rails has David Heinemeier Hansson. JavaScript came from Brendan Eich, but it was like a work for hire, wasn&#x27;t it? Microsoft and Netscape just kind of ran with it.<p>Then I guess it did have a shepherd, the W3, and all the browsers followed its standard, except the one that had 90% of the market. At long last, in the past few years, market share has passed to companies that are much more willing to follow open standards.<p>But at the same time, the user base is huge, a churning mass of millions of programmers of every level of ability, and each one of them can now publish their framework on Github. Plus there are several large web companies that are competing with each other.<p>Thankfully at least the language itself has a single standards track. Cross-browser agreement isn&#x27;t perfect, but it&#x27;s much better than it used to be. It&#x27;s just that we don&#x27;t have a standard library, like Perl&#x27;s CPAN. Instead we have NPM.<p>I wasn&#x27;t paying enough attention when Perl and these other languages developed, so I don&#x27;t know for sure why they&#x27;re different, or even if they were that different at this stage. Even they have their different web frameworks to this day.
评论 #12759693 未加载
评论 #12760184 未加载
prewett超过 8 年前
I think all the churn is a sign of several problems. First, the language was not designed to do what people are trying to use it for. Second, I question whether the framework makers are familiar with &quot;native&quot; UI APIs (e.g. Java, Qt, NextStep), which solved a lot of these problems years ago. Notice the lack of churn in native UI APIs (exception of Microsoft). Third, it seems like the frameworks try to build on top of HTML, which I think is a mistake, because HTML was not designed for layout flexibility and pixel-perfectness (unlike native widget APIs). Furthermore, HTML was poorly designed for anything but simple word-processor documents: why is there no &lt;block&gt; element that is inline-block?! That&#x27;s the first thing I end up assigning to everything. But the whole declare-your-document approach is inherently too simplistic for much beyond a word-processor document. Note that PostScript, and PDF which is an enhancement, has been pretty stable and standard for years, which indicates it is a good solution to the problem. Ultimately, you need to be able to program your documents and put pixels exactly where you want them. But even just sending over a blank HTML page and then having JavaScript add everything programmatically is probably better-suited, despite having to ultimately get squeezed into the HTML approach.<p>In my opinion, we need to realize that webapps are not documents, and document-oriented HTML is the wrong tool. I don&#x27;t think things will get better until we start looking at webapps as essentially drawing on the screen, like native UI APIs. I think we need a standardized virtual machine, like a lightweight JVM (or, better, a heavyweight Lua), which would allow people to use whatever language they prefer, as long as it can compile onto the instruction set. Static-type people can use a statically-typed language, and dynamic types can use dynamically-typed languages. Make an instruction set that maps well onto native CPU instructions, and provide well-thought out input and drawing primitives. We essentially need a PostScript for apps.
评论 #12761417 未加载
评论 #12762331 未加载
评论 #12758790 未加载
评论 #12759954 未加载
rhizome31超过 8 年前
Because nobody has yet invented a compelling way to write JavaScript applications, so people keep trying. We&#x27;re still waiting for the Ruby on Rails of frontend development.<p>I&#x27;m not saying Ruby on Rails is the best backend framework (I don&#x27;t use it anymore), but when it came around everybody understood that it was getting something right. It popularized a new model for server-side web development that all other communities started to follow and improve. When it came out, most developers who were already working with the web could see that it would be very useful, it solved real-world problems they had, it just made sense.<p>This is much less clear with JavaScript frameworks. They usually have a tough learning curve and the benefits are not always coming as expected. So people keep trying to find a model that works well.
评论 #12761291 未加载
评论 #12761555 未加载
评论 #12761812 未加载
评论 #12761421 未加载
评论 #12761232 未加载
评论 #12761704 未加载
gravypod超过 8 年前
I think many people are missing what&#x27;s happening here. This isn&#x27;t the first time we have seen lots of churn. Every time some group discovers something &quot;new&quot; they latch on to it and try to shape it in their image of what is the best. This is natural and important.<p>Even looking back about 20 years, how many companies where making CPUs? How many different architectures where there? How many companies where making PC clones?<p>Remember<p><pre><code> RISC is going to change everything - Hackers </code></pre> We get fanatical about random things every few years because the technology is generally good, then we all thing &quot;that&#x27;s stupid I like it better like this&quot; and after a few years of unmaintainable messes we settle on the middle ground that most people are ok with (x86).<p>This is natural the world isn&#x27;t ending
评论 #12761021 未加载
mambodog超过 8 年前
A lot of comments here seem to suggest it&#x27;s just because of people creating projects to get attention. I think this reason is massively overstated, and appeals to the unfortunate HN meme of disparaging other people&#x27;s work to signal that the commenter is smarter than the herd.<p>However, I would suggest that we are now building applications at a level of complexity which has not previously existed on the web before (unless you include non-standard tech like Flash&#x2F;Flex or Java Applets, which both had their shortcomings).<p>If you accept that some of the things which are being built actually unlock new possiblities in terms of user interface fidelity, and therefore has at least some purpose, then I would point out that the level of churn can be explained by the following:<p>1. JS has become very widely used very quickly, which means that there have been lots of hastily built things, which have been replaced by better things (and for every &#x27;better thing&#x27; there are many alternatives which fell by the wayside), and a larger pool of people to build them.<p>2. It&#x27;s easier than ever to build new tools (or any kind of app, for that matter), because the npm ecosystem makes it trivial to combine existing smaller pieces of code into new combinations.
评论 #12761655 未加载
评论 #12762747 未加载
ronilan超过 8 年前
It may not be the common view, but I think that what you are witnessing is, to a certain extent, &quot;deliberate&quot;.<p>Every framework has a &quot;sponsor&quot;. Every strong &quot;sponsor&quot; either has a vested interest in the web, or, a vested interest in some other platform with which the web competes.<p>The importance and power of the web are obvious. So, it is a dance. &quot;Embrace, extend and extinguish&quot;. And, hop, here we go again.
评论 #12760249 未加载
Illniyar超过 8 年前
I have a pet theory about that.<p>I think it based on two factors:<p>1. the size of the community, JavaScript popularity is huge, it&#x27;s probably the biggest programming community in the world, even the not so popular frameworks have a bigger community then the biggest frameworks in other popular languages (as a not at all accurate measurement, see vue.js and Python&#x27;s django github stars&#x2F;followers).<p>If you look at js frameworks&#x2F;methodologies&#x2F;libraries compared to the sum of the other languages&#x27; frameworks then the pace of change in Javascript compared to how many people use it is not as bad.<p>I had a similar experience with Java when it was the king of the web frameworks - JSP, JSX, JSF, Spring MVC, Struts, Stripe, Wicket and a dozen others.<p>Java was big enough to contain all of these frameworks, and it was big enough for people to support new ideas rather then iterate on existing ones.<p>I&#x27;m not familiar with C&#x2F;C++ enough, but I think it has a similar amount of change to Java (which is somewhat less the JS)<p>2. the other big factor is how decentralized it is - JS is extremely decentralized, there are tons of big organizations contributing to it&#x27;s advancement, to frameworks even building their own compilers (all the browsers).<p>Java is very similar in this regard, even in their governing model (a collection of companies that decide on standards together, though Java has drifted from that model with Oracle&#x27;s lead lately).<p>C# is the opposite, it&#x27;s one of the biggest languages but doesn&#x27;t have a lot of change in it - everything is dictated by the central authority (Microsoft) and competing frameworks that don&#x27;t get popular enough.<p>There are other factors of course, but I think most of those can be seen in other languages with less change, and are less relevant overall.
fiedzia超过 8 年前
Imagine that you have a furniture factory. There is one room where one guy who works for you produces tables. In next room there is another who produces sofas. And then another one who makes chairs. The demand is great, so routinely you hire more people to produce more things.<p>As you walk, you realise that each of them uses selection of screws and chisels and screws and wheels, and types of wood and door handles and all of them are somehow different. Not because they have to be, but because they were acquired independently by each worker. You come with an idea that if you standardise on some set of commonly used wheels and handles and chisels. This means you will need less of them, it will be easier for each worker to acquire, reuse and combine them, less time spend relearning different tools and a lot more other benefits. Once you did that, you may realise that the things built on top of that - like drawers, doors, covers - can benefit from the same standardisation. And so you do and keep improving your factory. Notice however that such idea would never come from single worker.<p>So JS is stuck at being early-stage factory. Main thing that it lacks is a boss that looks at it and improves it. Any proposed change has to gather momentum, convince some committee and even than it takes years to push it. It takes so much effort that most of the time anyone who tries just gives up. Where in other languages its enough to send complain email and propose a solution to one mailing list to get someone involved and get proposed change deployed in the next release a month later, you can&#x27;t do it with js. For the same reason there is nobody to make a sweeping change and wipe this disaster from earth. Too much politics involved. So everyone hack his way around it, and hacks are not very maintainable, so you&#x27;ll need to redo them on next project, but very differently. Making any two projects incompatible and hard to build one on top of another.<p>Java had its Sun, Python had BDFL Guido, JS has no such thing.
评论 #12760630 未加载
inimino超过 8 年前
First, Web technologies (not just JS but HTML, CSS, DOM, etc) are implemented by multiple browsers, who compete and have other agendas, as well as backend and non-Web platforms. This underlying technologies are just messy in a way that only a world-wide, massively distributed, twenty-year-old platform can be.<p>There&#x27;s nothing quite like this anywhere else in tech, as most platforms are dominated by a single vendor. Imagine what Windows development would be like if, in addition to the need for backwards compatibility, there were three or four competing vendors of Windows, each with different feature sets and bugs.<p>Second, tools and libraries can overcome many of these problems, but these fixes come with costs, including library maintenance, cognitive overhead, security risks, complex build and deployment processes, and retraining and hiring issues. Because JavaScript is used across many industries and teams of all sizes, what is perfect for one may be completely inappropriate for another. Many projects, like GWT, meet the needs of the environments in which they were designed, while being so much a product of those environments that they become anti-productive elsewhere. So we have a very diverse set of tools on top of a very messy and relatively old set of underlying technologies.<p>Finally, many new programmers come into this incredibly diverse, sometimes frustrating, environment every year. It is an environment that encourages open-source contribution. It&#x27;s no surprise that many new tools and libraries are released every year, and some of them gain adoption.
viraptor超过 8 年前
My interpretation of this is that js was a pretty cool idea, but it was used as a hack on top of websites initially. (Think Netscape times) It was held back for a long time by lack of improvements, no real coding environment, no real modules apart from copy pasting. It was held in place by a huge rubber band while people actually tried to pull it their way.<p>Relatively recently the standardisation, improvement of the language itself, real origin policy, common frameworks and finally npm released whatever was holding it back. It shot out from the rubber band and it&#x27;s trying to catch up in months where other languages had years to find the way. You may notice that even though a lot is changing, not much is really new. Async existed before, so did dynamic languages, so did MVC, so did immediate mode UI, so did many other things. Js is now going through all of those ideas quickly because the path is known and clear. It will slow down though. There&#x27;s only so many paradigms that we know. At some point people will run out of easy ideas and will have to start slow experimentation just like all the others.
dpweb超过 8 年前
The perceived benefit of creating a new framework is large (I&#x27;ll solve programming the internet!) and the cost is quite small (easy to write js with little knowledge), there&#x27;s a huge number of devs, and no one really owns the space.<p>Compare it to say, creating a new operating system. Sure the world could benefit from a better OS, so why not make one? The perceived benefit is small (why do this when Linux exists) and the cost is large (it&#x27;s hard and you need a lot of knowledge).<p>Also a lot of half baked ideas. The number of js writers is huge but on average very inexperienced compared to other languages.
dancek超过 8 年前
I think it&#x27;s because of historic baggage and politics.<p>JS used to be a horrible ecosystem where different browsers behaved differently, the language itself had various pitfalls and most code was written in classical script kiddie style. This has been changing for the better for a long time in small steps, but frankly something has always sucked, warranting the next evolution.<p>The second point is politics: JS is huge these days, and there&#x27;s still a lot of room for improvement. Everyone wants to be the company behind the de facto standard library for web apps.
twblalock超过 8 年前
Coming from a Java background, it seems to me that a lot of what is going on in the JS world is similar to what enterprise software went through over the past 20 years: the &quot;framework&quot; craze.<p>This is appropriate because websites and web apps are more complicated than ever before, and face the same challenges that traditional enterprise software faces: large codebases that stay around for a long time and need to be maintained and refactored, integration with various APIs, asynchronous communication, separation of concerns, separation of model and view, business logic, test coverage, development of different parts of the application by different parts of the engineering team, etc.<p>At some point, the benefits a framework provides outweigh the time it takes to adopt and learn the framework. A framework provides an overall way of doing things that gives structure to the project and makes a lot of the challenges I mentioned easier to deal with. Frameworks significantly reduce the number of &quot;how do I implement this feature?&quot; questions that are bound to arise, by providing a standardized way of doing things. They make it easier for teams to collaborate, because the codebase is relatively consistent and engineers aren&#x27;t constantly dealing with other team members&#x27; idiosyncratic code. (Yes, that means there is less room for individual creativity and expression, and it makes programmers interchangeable to some extent. Welcome to the world of business.)<p>So, why are there so many more JavaScript frameworks than Java frameworks? I suspect it has to do with the low barrier to entry of programming in JavaScript as compared to Java. I also think that dissatisfaction with whatever frameworks are current is a major driver behind the creation of new frameworks. (I suspect that a lot of the dissatisfaction with the current frameworks is misdirected and is really due to the nature of JavaScript as a language, and TypeScript is an example of an explicit reaction to that).<p>Another reason for the proliferation of frameworks is that the playing field keeps changing. Most recently, it has been smartphones and social media that have revolutionized the way people use the web. Before that, it was streaming video and &quot;Web 2.0.&quot; Whatever the next big thing is, I&#x27;m sure it will inspire a new flurry of new web development frameworks.
HelloNurse超过 8 年前
There is a high rate of change in fads, not in reality. What is actually worth learning and following has a normal change rate. Fads are governed by a vast community of hipsters who clearly prefer to spend time and effort on earning 15 minutes of celebrity with some library or tool than on more productive tasks like improving their own web site, working for customers or learning principled computer science and software engineering. Meanwhile, web standards like HTML, CSS and ECMAScript and web browsers evolve at a reasonable pace and in a saner way: doing more things and doing the same things in a nicer way. The traditional design attitude of figuring out how web standards and imposed technology allow to do what is needed and only then selecting tools and libraries that look useful is the main way to ignore fads.
hoodoof超过 8 年前
Cause JavaScript is used in browsers so it is the language of the web, and because it has turned out to be incredibly flexible and adaptable, and because it&#x27;s pretty simple once yo get past the async thing, and because alot of effort has gone into making it fast.
评论 #12758783 未加载
SFJulie超过 8 年前
It is because JS does not change much that there are all this libraries around that changes a lot to try to give an underfed horse more power.<p>In comparison, java, PHP have undergone some more than welcome mutations in terms of syntax clarity. Evolution in JS is made by adding features in frameworks, not in the core definition of the language.<p>You could see JS as the assembly language of the browser and all the frameworks as some C&#x2F;fortran&#x2F;C# that translates into JS.<p>The problem is the web would look definitively balkanized&#x2F;ghettoed between old and new computers if you made a non backward compatible change of JS ...<p>JS is the most ducked taped language of the landscape of computers. And it is leaking memory, performance, abstraction from everywhere.
ggregoire超过 8 年前
&gt; For example angular 2 is not compatible with angular 1, so before you even learn a framework its API is different and when you finally learn it, probably is considered outdated<p>Angular 1 has been released in 2010 and Angular 2 in 2016. Obviously, if you started to learn Angular 1 last year it can be frustrating (specially with Angular, it&#x27;s not the easiest framework to learn out there [1] [2] ). But I would say the majority of Angular developers has used it for 3 or 4 years now and most of them probably enjoy to have the chance to learn a new modern framework that fixes the design issues of the first version.<p>To generalize: The front-end world is surely overwhelming for the new comers (but is it not the same in all the other fields of programming?). However, after some years into it, you realize that you have mostly sticked to the same tools for years. [3]<p>[1] <a href="https:&#x2F;&#x2F;www.bennadel.com&#x2F;resources&#x2F;uploads&#x2F;2013&#x2F;feelings_about_angularjs_over_time.png" rel="nofollow">https:&#x2F;&#x2F;www.bennadel.com&#x2F;resources&#x2F;uploads&#x2F;2013&#x2F;feelings_abo...</a><p>[2] <a href="https:&#x2F;&#x2F;i.imgur.com&#x2F;5rJH3co.png" rel="nofollow">https:&#x2F;&#x2F;i.imgur.com&#x2F;5rJH3co.png</a><p>[3] <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;ggregoire&#x2F;f41ae88bb8e192ad70be690f19851a33" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;ggregoire&#x2F;f41ae88bb8e192ad70be690f19...</a>
neilsharma超过 8 年前
Slight tangent, but if someone were getting started in JS today and wanted to build medium-complexity, async-heavy, web apps with decent-sized backend, what stack should he invest his time on? React, angular, node, elm, express, etc?<p>Let&#x27;s assume he wants the skills&#x2F;tools to still be relevant in 1-2 years time in a sizable percentage of the job market (noticed that many startups don&#x27;t like people with web experience that isn&#x27;t in React&#x2F;Angular&#x2F;Node).
评论 #12762427 未加载
评论 #12762357 未加载
intrasight超过 8 年前
I&#x27;d say the opposite - it&#x27;s changing way to slow - at least in browsers, where IMHO is the only rational place to use JavaScript. The big change will be the arrival of webassembly.
评论 #12758465 未加载
评论 #12758359 未加载
btbuildem超过 8 年前
Because the ecosystem is mostly built by people with no formal education and little experience -- they&#x27;re literally re-inventing everything from the history of computer science.
评论 #12761805 未加载
评论 #12761613 未加载
anilgulecha超过 8 年前
I think it&#x27;s because of certain new paradigms that are opening up so many opportunities.<p>With HTML5, CSS3 and ES6 being released, and seeing wide adoption, the web-application layer and APIs suddenly have access to a magnitude more functionality, and we&#x27;re essentially in the early romantic period where we&#x27;re pushing these new features to the max, and figuring out what sticks.<p>Over the next year, we&#x27;ll settle at the maxima of efficiency and usefulness with the web framework. Despite some negative voices, IMO these are very exciting times for the web :)
pmarreck超过 8 年前
First of all, Angular sucks (&#x2F;opinion), so that&#x27;s a bad example.<p>I think it&#x27;s due to the fact that Javascript is <i>so terrible</i> at any scale, yet is <i>so pervasive,</i> that working with&#x2F;around it becomes this deer-in-headlights thing you can&#x27;t ignore... since most HAVE to work with it in some form, doing any Web stuff.<p>I recommend Elm, as a way around Javascript&#x27;s problems while still allowing you to run in browsers: <a href="http:&#x2F;&#x2F;elm-lang.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;elm-lang.org&#x2F;</a>
daxfohl超过 8 年前
Because you can write a new JS&#x2F;HTML framework in a few days. Compare this to e.g. Qt or GTK or WinForms or WPF. Each of those would require man years of effort to reproduce from scratch.<p>Also these JS frameworks tend to be opinionated with how databinding works etc, such that there&#x27;s always <i>something</i> that you have to work around when you&#x27;re using the framework in real-world projects. People get annoyed enough that hey it&#x27;s easier just to create another framework.
sebringj超过 8 年前
NPM + Github + Node.js + JavaScript is easier + JavaScript was already front-end ubiquitous came together in a perfect storm to allow JavaScript packages to be created and spread like butter on toast. JavaScript is the easiest to develop with, has the most adoption, runs client&#x2F;server and has the easiest package manager to both publish and use. Why is this even a question? This is not an argument for JavaScript but merely stating why it is changing so fast.
whostolemyhat超过 8 年前
I think it&#x27;s due to the new version of Javascript being released recently after years of stagnation. ES4 was abandoned and ES5 was mainly standardising existing practices, while ES6 has added a lot more - new syntax, new types, iterators, generators, modules and so on.<p>A lot of the churn going on is due to people trying to work out the best way to use these new features, along with whether or not to keep backwards-compatibility with existing frameworks and libraries.
dfabulich超过 8 年前
JavaScript is a programming language that was frozen in amber for a decade, and is only now starting to thaw.<p>Brendan Eich initially designed JavaScript in an infamously short time--he coded and designed the first prototype of JS in just 10 days.<p>It quickly became the only programming language you can use in a web browser, with multiple vendors, including Microsoft, owning mostly compatible implementations. Due to trademark disputes they couldn&#x27;t even call the language standard &quot;JavaScript,&quot; so the language standard is called &quot;ECMAScript.&quot;<p>Microsoft didn&#x27;t want&#x2F;need JavaScript to change or grow at all. Once Internet Explorer 6 became the dominant browser on Windows, (which was and still is the dominant PC operating system,) they stopped releasing new major versions of IE for five years (2001-2006), and IE7 wasn&#x27;t a very big upgrade, especially in terms of JS language features.<p>Mozilla unilaterally released new language features that only worked on Firefox, so nobody could use those language features in practice on the web; in many cases, new language features wouldn&#x27;t even parse in IE.<p>In 2007, there was an attempt to build a major new JavaScript version (ECMAScript 4) with a <i>ton</i> of new features, (classes, a module system, optional static typing, algebraic data types) but it was scrapped due to disagreements between Mozilla and Microsoft. They wound up implementing a much more modest upgrade (ECMAScript 5) which shipped in IE9.<p>In all this time, there was essentially no interest in running JavaScript in command-line tools or on the server side. That changed in a big way in 2009 with Node.js. It used V8, Google&#x27;s JIT engine for JS, and it was surprisingly fast.<p>This is when the language really started to unthaw. IE declined in dominance as Chrome rose, and the demands of server-side development started to be felt more strongly in the JS community.<p>ECMAScript 6 started to add back in a number of cool features, and by this time, JS developers were desperate to use them. This lead to the development of &quot;6to5,&quot; (now called &quot;Babel&quot;) which allowed you to write code in ES6 and &quot;transpile&quot; it into older JavaScript versions, so developers could experiment with new language ideas without pushing them through the standardization process.<p>Languange evolution kicked into high gear at that point. There are a bunch of interesting pluggable transpilers out there, including TypeScript, JSX, and Flow, and countless non-standard plugins for Babel.<p>And that&#x27;s just the language itself! The &quot;standard library&quot; for JavaScript for years was just &quot;whatever IE6 could do&quot; and that wasn&#x27;t very much. IE6 was pretty buggy as well. jQuery became popular as a library to smoothe over differences between browsers, but mostly to work around bugs in IE.<p>Client-side frameworks were tough to implement on IE6, not least because IE6 was just so darn slow. As newer, faster browsers came out, it became possible to trade off some performance to improve developer productivity.<p>And everybody has their own ideas about what those trade-offs might be like!<p>At the same time as IE6 started to decline in popularity, the mobile web on iPhone and Android rose in importance. Smartphones include a bunch of new sensors (GPS, orientation, camera) and new limitations (RAM, slow&#x2F;unreliable network). This spurred on browser vendors to &quot;compete with native apps,&quot; adding features to the browser platform, inviting developers to respond to these with new frameworks.<p>As for the JS server-side, Node.js is still a relatively young platform as these things go, and so it&#x27;s not surprising to see a lot of churn in server-side libraries&#x2F;frameworks, especially given how much churn the language itself is undergoing.<p>Node.js is also the first major platform to be born in github, which IMO encourages experimentation (and flame wars) via forking.<p>Node.js&#x27;s standard library is designed to be small, (they call it the &quot;core&quot; and resist Python&#x27;s &quot;batteries included&quot; philosophy,) forcing folks to rely on libraries and frameworks to keep the lights on. Even most libraries themselves need to take dependencies on other libraries, because of this &quot;small core&quot; philosophy.<p>I think it&#x27;s going to be at least a few more years before things start to cool off a bit. Enjoy the ride, if you can!
评论 #12758540 未加载
bbbbbbbbbbb超过 8 年前
There are two different questions there.<p>Angular 1 was written by people who knew nothing but OO programming. JavaScript isn&#x27;t OO. So they spent a lot of time square pegging a round hole because they were ignorant of what they were doing (probably a group of young coders).<p>People are now starting to get on the functional train (which JavaScript is more like than OO), and angular is trying to now fix the fact they were short sighted and too opinionated about the wrong things.<p>JavaScript, in general, has always been in a rapid state of change. Or, more broadly, the UI of the web. From flash and silverlight to mootools and jquery and CSS animations and canvas... there isn&#x27;t a good way to do web UIs yet. There is a lot of trial and error happening which makes for some rough waters.
techbio超过 8 年前
JavaScript was originally a way to create interactive webpages, but because it broke or replicated MVC, became the backend too.<p>The variety of backend requirements, and the flexibility of UX, led people to solve many individual workflow bottlenecks or generalize to any&#x2F;many.<p>Then so, like the English language, exploded to the simple--&gt;jargon range of overloaded usage and niche comprehension, very quickly fragmenting, but universally powerful.<p>Developing a framework as a startup for a particular use case may take more time than prototyping on an existing framework--this is why the prototype should be discarded, and a critique of how open source&#x2F;reusable code has always been a source of technical debt apart from the rare, shining outliers.
scotty79超过 8 年前
It&#x27;s due to openness of npm ecosystem. Any other language you&#x27;d have 50 different angulars at the same time but almost noone would know about any of them because they&#x27;d be confined to the companies that spawned them.<p>Frameworks as a popular thing started because people (rails?) started sharing their code and no other can share code as easily as JS and npm.<p>Angular 2 should be called Begular because it doesn&#x27;t have anything to do with Angular but inspiration. You can stay on Angular but don&#x27;t be surprised that people will prefer to develop something else since Angular folk painted themselves into a corner so hard that to make framework that sucks less they need to go back to drawing board.
mgalka超过 8 年前
I&#x27;ve wondered the same thing. My guess is that it&#x27;s because node is still pretty new, whereas most other popular languages have been around for a while and the &quot;right&quot; way to do things has already reached some consensus.
评论 #12758189 未加载
m_mueller超过 8 年前
To piggyback here: How long until we can just use whatever language we like, including Std.-Libs, package ecosystem, sandboxed FS (and thus DB support) and JIT it to JS in all commonly used Browsers?
评论 #12762825 未加载
评论 #12758722 未加载
tomphoolery超过 8 年前
The change in JS isn&#x27;t &quot;out with the old, in with the new&quot;...it&#x27;s just &quot;in with the new&quot;. There are more choices than ever before, because you can build about 100x the kinds of apps that you could have before with JavaScript. Prior to 2009, JavaScript was pretty much only good for web applications. Now, you can build servers, embedded devices, native applications for every platform imaginable, you name it. Pretty much anything that <i>can</i> be built, can be built with JavaScript.
wiseleo超过 8 年前
JavaScript is being redefined. The language is flexible enough because of prototypal inheritance that every method can be redefined at runtime. ES6 added many missing features.<p>That&#x27;s unusual. These frameworks extend the language. Angular&#x27;s developers reasoned that anyone smart enough to figure out Angular 1 will be able to migrate their code to Angular 2. It&#x27;s looking more like C++ and less like CSS. :)<p>Take a look at Meteor&#x27;s code sometime. It does things I never expected possible with JavaScript.
fibo超过 8 年前
Cause we are living in a transition period. Remember the CVS war, cvs vs subversion, then hg vs git. Now git seems to be the winner and there is no big change since few years. In these days there are a lot of progress going on, let&#x27;s wait things get stable but it Will take a very long time considering: es6, es7, vr, webgl2, serviceworker, webaudio, http2, webassembly and a lot of other stuff in some way related to js.
spion超过 8 年前
I touch on it a little bit here:<p><a href="https:&#x2F;&#x2F;spion.github.io&#x2F;posts&#x2F;javascript-is-not-cancer.html" rel="nofollow">https:&#x2F;&#x2F;spion.github.io&#x2F;posts&#x2F;javascript-is-not-cancer.html</a><p>TLDR: I believe its mostly due to the lack of basic language facilities in pre-ES6 JS. With ES6 covering the basics this will probably slow down (At the very least people will stop writing their own module and object systems)
nodesocket超过 8 年前
One could make the argument that the JavaScript &#x2F; Node.js community are uber early adopters and push technology more often and further, but I&#x27;m not certain that is what is really going on.<p>However, moving fast does percolate down from the top. Look at Node.js and how often they release new versions.
agentultra超过 8 年前
Because there&#x27;s a lot of investment in the language and its ecosystem. There&#x27;s more money pouring into V8, *Monkey, and other JS compilers than goes into most any other that I can think of. With popularity comes rapid evolution.
jerf超过 8 年前
Javascript and the browser environment it is still pretty much glued to (Node notwithstanding) has several major architectural flaws and some unique challenges that are particularly acute for Javascript, and a lot of energy has been expended trying to figure out how to use the not-very-strong tools in a way that can support high-quality applications without too much developer effort.<p>Also, some of these things are getting addressed over time, so I&#x27;m kinda going to talk about the state of JS over the past decade rather than the state it is in right now. Some of these things are being mitigated (very few things are really being &quot;fixed&quot;), but it&#x27;s still early. These issues have historically included, but are not limited to:<p>1. Poor modularity brought on by being not just a &quot;scripting language&quot; like, say, Python, but a language actually designed to write small event handlers that fit into a single HTML tag attribute. &quot;x = 56&quot; defaults to putting x in the global namespace. The language did not provide modules or very much in the way of separation by default. You&#x27;ve pretty much always been able to namespace things, but you had to really work at it; the language did not help. (I&#x27;ll also toss in the dynamic typing here, just because I don&#x27;t want to give it a full slot here, but it does inhibit making big projects easily.)<p>2. Very poor control-flow management ability due to the choppiness of event-based programming. There has historically not been a way to maintain a call stack across events, which strips away all the tools of structured programming, a set of tools so fundamental to how we operate that we often don&#x27;t see them as a fish doesn&#x27;t see water. Promises and generators allow us to try to mitigate this, but at the cost of spending design budget; promises for instance introduce a second entirely new set of control flow mechanisms that mirror the base language&#x27;s looping and flow control constructs, particularly annoying because you must control both error and normal flow on both of these levels.<p>3. The browser&#x27;s interface to JS is the &quot;Document Object Model&quot;, which due to historical reasons is a Java-designed API bolted on to the side of JS. A native JS model could have been much more powerful and easier-to-use, requiring us to burn less design budget on simply interfacing to the browser in a reasonable manner. A lot of the design churn is attempts to answer the question &quot;How can we make manipulating the DOM more JS-native?&quot; There are also several performance issues introduced by the fact that the DOM model, combined with the rendering model, is <i>extremely</i> rich; things like manipulating a node on a page vs. detaching the node, manipulating it, and reattaching it have historically had end-user-significant differences in performance, as every DOM change triggers an incredibly complicated set of updates to a widget toolkit that was designed for flexibility rather than performance.<p>4. Browers themselves further introduce many complications. Then you have all the <i>security</i> issues that arise from being fundamentally client-server with dubiously-trustable servers. You have all the details like what cookies flow between what domains and where and when, that you need a different domain for your static content both for security and performance reasons (prior to HTTP2 particularly), and any number of crazy APIs that also <i>vary</i> across browsers, requiring the developer to use shims for things as simple as XMLHTTPRequests because you just never quite know what you actually have.<p>5. I could have list &quot;client-server&quot; in #4 there, but it&#x27;s also worthy of its own callout. Many frameworks have different solutions for client-server interactions, ranging from ignoring the problem and letting you solve it up through Meteor-like attempts to completely blur the lines between the two, and everything in-between. Client-server interaction has been further inhibited by the fact that historically, there have not been any reliable and high-performing mechanisms for streaming things between the client and server, creating a design limit around needing to be request-based, further creating a wide variety of ways of hacking around this problem, each with their own quirks.<p>6. As an open standard, nobody is really empowered to fix these problems in a coordinated way. As a result we&#x27;re sitting on top of 20ish years of standards, some well-done, some poorly-thought out, some hackily fixed after security issues, many poorly-understood by developers, and all in the browser.<p>7. Finally, one must not ignore the fact that web pages continue to become intrinsically more and more diverse. The best framework for a document-centric app is one thing, the best framework for a CRUD app another, and neither of those will help you much with an intrinsically real-time streaming app like a chat client.<p>And there&#x27;s probably a couple more dimensions I could come up with if I thought more. What you see is that there&#x27;s a lot of possibilities for mitigating all these issues (&quot;solving&quot; is often not on the table, these are mostly fundamental issues arising from layers below the JS), and the framework churn is in many ways nothing more than people combining all of the various combinations of possible answers to these problems, looking for synergies, solving different problems (per #7), and basically frantically rifling through 60+ years of computer science theory looking for the perfect solution to problems in an environment with so many fundamental strutural issues that no perfect solution is possible. Which is also why you see such vigorous advocacy sometimes; someone thinks <i>this is it, this solves all my problems once and for all</i> because it worked for a couple of weeks, and only once the community has chewed on it for a while does it become clear that there&#x27;s a lot of people with different needs for whom that doesn&#x27;t work so much, and it also didn&#x27;t actually solve all the problems once and for all after all.<p>BTW, none of this is criticism of the JS community, merely explanation. Given the hand we&#x27;ve been dealt in the web browser, lots of people trying lots of things is the best we can hope for. The fatigue is just an unfortunate, but unavoidable, side effect. The best solution for the fatigue is to concentrate more on the fundamentals being explored than the details of a particular framework. For instance, &quot;reactive&quot; programming is its own paradigm, with its own lore and learning; learning how to program that will also let you write better spreadsheets and be better at creating database triggers, for instance. Concentrate on the fundamentals. The fundamentals are not churning that fast.
aikah超过 8 年前
&gt; For example angular 2 is not compatible with angular 1<p>That&#x27;s not the problem, angular 1 and angular 2 are 2 completely different frameworks that share the name and the team only. The team wanted to piggyback on the fame of the first version, but they share absolutely nothing conceptually. and contrary to what the Angular team says there is no &quot;upgrade path&quot;, you need to learn the stuff from scratch once again.<p>The problem is, and the Angular team will find out very soon, &quot;second systems&quot; unless they provide huge advantages over the first version, are always a failure.
评论 #12760885 未加载
techbio超过 8 年前
<a href="http:&#x2F;&#x2F;hotframeworks.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;hotframeworks.com&#x2F;</a><p>Skip the chart, look at the long tail of listings.
评论 #12762199 未加载
techbio超过 8 年前
Is there any existing tool to interrogate a codebase for adequacy for a set of tasks? Ie. PageRank&#x2F;&#x27;citations&#x27; for frameworks?<p>Should there be?
niroze超过 8 年前
millennials ;)<p>...and it is where a lot of excitement is now. Excitement drives development (of tools themselves and general usage). Much of the time, it is for the best.<p>People tend to get lost in tooling, which I can understand.
kewp超过 8 年前
It&#x27;s the Internet - remember that remarkable decentralized network for informational retrieval developed by ARPA in the 70s ? It&#x27;s going to change the world !<p>It&#x27;s always on. Anyone from anywhere can interact with what you create instantly. What else is like that ?
d0ugie超过 8 年前
Why didn&#x27;t the Dart VM make it into Chrome?
grigio超过 8 年前
Because nowdays js has so many use cases
cygned超过 8 年前
My (very) personal opinion: I think, the culture is a important factor here.<p>There are very great developers in the ecosystem, who write great tools and libraries which become popular, are well maintained and documented. But the majority of the developers are just average developers. As everyone, they attend conferences and bootcamps, and when I then talk to them, the usual thing they learned there were two things: (1) make a blog and write about what you are doing and (2) make some OSS projects or participate in existing projects.<p>It is very great to have people who create projects and bring in new ideas, it helps create a mature technology. But the truth is, most of the average developers have never been in larger projects, have never been digging into complicated&#x2F;large open source libraries and have never had to manage larger applications. One of the most important things you learn in such projects is to be calm and think about documentation, architecture and dependencies carefully.<p>And this leads to the current situation;<p>- we have a lot of libraries doing the same things, just because developers do this &quot;just create an oss project on GitHub&#x2F;npmjs&quot; thing without searching for existing solutions<p>- some hip developers have so many projects that I always ask myself how they are planning to support all these<p>- when a problem arises, e.g. a bug in a library, many developers these days seem to tend to write their on lib fixing that problem (if it is a small library) or building an internal workaround instead of contributing back to the original project<p>- on the other hand, there are a lot of project maintainers who ignore issues and pull requests just because they have a very strong opinion about what their library is doing. Oh boy, sometimes it took me days to write a PR which (from my point of view) improved something or added a new feature, carefully followed existing guidelines (code formatting, docs, etc) just to get the answer &quot;nah, that&#x27;s not my scope. Fork the project or write your own&quot;<p>- it seems to be easier to convince people with less business experience. They often jump on the next hot train coming along that sounds good. I don&#x27;t want to exclude me here completely; as I read about React, it started working with it directly - because it seems to solve all the problems I had with Angular and Backbone<p>- I have the feeling that a lot of developers today (still) have this &quot;read the f*g code&quot; mentality. Even mature libraries developed for years have so bad documentation (even though they have their own .io domain just for it) that I have to read their source to see what parameters I can pass into a function.<p>I think, browsers&#x2F;engines&#x2F;tech companies&#x2F;... are also part of the problem. For years, JavaScript has been &quot;developed&quot; (language spec) slowly and browser have been adopting features slowly. But then, suddenly, everything exploded. And now we have very awesome features in the language that allow for things that have not been possible before. And in fact, these features deprecate some libraries or frameworks. And instead of abandoning a project by deciding that only bugs will be fixed in the future and no new features will be added, the developers either try to move to the new technology with their product; or are forked by people who were part of the project but didn&#x27;t like its developers&#x2F;strategy&#x2F;whatever and want to use the new opportunity with the new language feature to change things; or get company by another project that does basically the same but started from scratch and uses all new language features; or all together.<p>As a side note, I work with JavaScript every day and that is only my opinion on the topic. Please don&#x27;t feel offended.<p>[edit: typos and formatting]
jlebrech超过 8 年前
because it blows.<p>we need a full IDE, Language, Library combo for better development.
评论 #12761684 未加载
NotAJSExpert超过 8 年前
I think one of the things that&#x27;s led to the mess with javascript is that it&#x27;s kind of crazy to have settled on using a language to write such large applications that:<p>- Has no standard library. - Is used to automate host platforms that have either no standard framework or very little (e.g. Node on v8 doesn&#x27;t have <i>nothing</i> but it&#x27;s quite small). - Has no module&#x2F;namespace system.<p>The effect of this is that immediately, anyone building anything in non-trivial has to make a decision about how to fill in things that would be covered in a standard library. I&#x27;m not even talking about fancy stuff, just the stuff supplied by underscore, lodash, etc. The choices are basically:<p>1) Write all the code yourself. This is an extremely low ROI option 2) Adopt a series of libraries and hope you can get them to work together 3) Adopt a framework, that by its nature, will be designed to use some sort of new pattern and this pattern will be expressed on top of whatever libraries the framework uses, so just draft behind that.<p>There aren&#x27;t really many other mainstream systems where a language is used to specialize applications on a platform where this situation obtains. Windows, OS X, iOS, Android, even Java, come with enormous, enormous amounts of library code. Generally, this library code also pushes one fairly firmly towards certain design patterns.<p>Imagine if we all decided to use...hmmm...Scheme, I guess, to develop Windows applications, and you took away everything but the lowest-level Windows APIs. I&#x27;m using Scheme because the Scheme standard outlines a remarkably small language that has nothing approaching a standard library.<p>We&#x27;d probably be in a similar situation. How do you do this? How much does adopting this or that library force you to do this or that? It&#x27;s just not very common to have a situation where to do anything non-trivial, you need to either: - adopt an enormous amount of third party code (because the situation works at every level, each third-party solution will also not be built on a standard library ecosystem) - write an enormous amount of boilerplate code.<p>And further, the issue is exacerbated by the fact that js doesn&#x27;t really have a standard module system, so even the approaches taken to fill these gaps are frequently non-compatible, or just choosing which system to use to manage modules often means replacing huge chunks of your application.<p>There are other reasons why JS the language is moving, all of the sudden: JS has had a lot of rough edges and all of the sudden a confluence of interest, capability, and technology has made it possible to sand down some of those edges.<p>But I think even if the ES process slows down, and we all agree that language-wise the features in the language are pretty good or something happens that freezes, we&#x27;ll keep seeing lots of churn because of the interaction between every project being built on towers of third party code with far-reaching effects.<p>When Java, for instance, was released, the standard library it shipped with included: - a set of standard container classes: hashes, vectors, arrays, etc. - a rich set of real types (e.g. numbers that weren&#x27;t insane, Objects for compatibility with the object system, primitive types in the language for performance) - a whole tree of calendar&#x2F;date manipulation code - a standard way of connecting to SQL databases and all the code for that - a standard GUI-drawing and event-handling system - a big, rich set of APIs for handling IO of various kinds with different performance&#x2F;complexity tradeoffs. - a concurrency api, threadpools, etc.<p>That&#x27;s just a sample. And all of the bits worked together, and sort of implied patterns in how things should be built and used.<p>You could certainly replace anything, should you choose to, in your project (e.g. the calendar stuff really sucked), but the point is, there was a default, and there was a standard pattern for where and how to bring in new library code, and that new library code would in turn be built on as little third-party code as possible.<p>Look at an average iOS project&#x27;s Podfile or Carthage file, Android project&#x27;s Gradle file, and then look at a Node or browser js project&#x27;s package.json. Then actually look in Pods and node_modules. The average amount of third party libs in a JS project is many orders of magnitude higher than in the others.<p>There are like, what, five or so competing implementations of Promises in javascript land? And they aren&#x27;t mutually compatible always, so this means if you want to use non-ES6 babel-compiled Promises in your code, you have to: - choose a library - hope that other libraries and frameworks you use use the same style - add shims or something where they don&#x27;t, or else switch out the library and framework.<p>This is just like...no one writing an Android app is like &quot;which Runnables library are you using?&quot;. No one writing an iOS app is like &quot;soo...the new GCD spec looks interesting, which GCD lib are you using for your project? Oh yeah how spec-complete is it? Does it work with AFNetworking?&quot;<p>&quot;Lodash makes JavaScript easier by taking the hassle out of working with arrays, numbers, objects, strings, etc. Lodash’s modular methods are great for:<p>Iterating arrays, objects, &amp; strings&quot;<p>Iterating arrays, objects, &amp; strings is something that most other languages have decent std lib support for, and so even your third-party libs will use the host language&#x27;s affordances. In Javascript you have to ask these questions all the time.
tolmasky超过 8 年前
My theory, which I think goes fairly against what others will say here, is that JavaScript&#x2F;Node is the first truly post-internet environments to reach critical mass. By post-internet I mean they consider <i>sharing</i> and open source as foundational to the environment (as opposed to tacked on later, or merely supported).<p>The &quot;JavaScript standard library&quot; (or lack thereof) is a clear example of this: NPM is the LARGEST collection of packages of any language, and you can almost always find someone who has already written what you need most the time. It <i>never</i> ceases to surprise me. During the Pokemon Go craze I was curious to play with the protocol: there was already a package to do it. I wanted to ping my find my iPhone, there&#x27;s already a package to do that. Its incredible. And yet the actual <i>built in</i> standard library is notoriously lacking. Although not by design, certainly the end result is that that has become &quot;OK&quot; thanks to NPM.<p>Compare this to something like AppKit (and UIKit), which were very much in the pre-internet&#x2F;sharing mentality: there is one framework everyone has and becomes experts in and is fairy stable, because its kind of the only thing you can rely on being around. Sharing code is very difficult, to the point where just copying and pasting files is still a valid contender.<p>The explosion of options and the increase in churn is a natural consequence of this. There are simply more people working on more problems, all encouraged by an environment where <i>sharing</i> code is a fundamental property. If step 1 of setting up node is <i>downloading other people&#x27;s random packages</i> then it should be no surprise that step 4 of sharing your own packages will seem natural. We should expect this to only get faster -- the more people program, the more crazy ideas will be tried, the more switching there will be. I really don&#x27;t understand what the alternative is: arbitrarily choosing frameworks to be around for a 5 years (a decade?).<p>We are simply taking the last measure of stability, which was largely governed by how long it <i>used</i> to take information to disseminate to the entire community, how long it used to take one controlling body to get their large waterfall releases out the door, and using that as an arbitrary comparison point to how long it takes hundred of individuals to release their individual takes on software. Asking to &quot;stop the churn&quot; is a strange request: there&#x27;s no single entity pushing stuff out &quot;too fast&quot;, this is the <i>aggregate</i> affect of all programmers in the node community publishing their ideas. Who are we asking to slow down exactly? I can understand saying the single case of Angular 1&#x2F;2, but the &quot;JavaScript fatigue&quot; people actually feel is due to the interaction of all the JavaScript projects that each gain and lose popularity.<p>Unless you believe we&#x27;re <i>really close</i> to figuring this whole &quot;software development&quot; thing out (whatever that means), I wholeheartedly believe that programming 20 years from now will look more like this -- <i>faster</i> pace of developments.
评论 #12767690 未加载
douche超过 8 年前
It&#x27;s because JS is, at it&#x27;s core, a shit language. All of this flailing around and creating a new framework every week is like the poor sods trying to struggle through the mud at Passchendaele. The more you fight it, the deeper it gets.<p>Better languages have sensible defaults, and a decent standard library built in. If we could run Python or Java natively in the browser, nobody would bother with all of this illogical complexity that has arisen to try to make writing Javascript moderately tolerable.
k__超过 8 年前
Because, finally all big players are in the game and Javaize the stuff.
RFVenter超过 8 年前
It&#x27;s all hype and fads. People re-inventing the wheel to make money.