6 ms·
Because we aim for organic growth: not too fast and not too slow. Based on stats, our userbase doubled since last year; and that's with an yet-to-be-optimized c
by zoffix222 10y ago
Because we aim for organic growth: not too fast and not too slow. Based on stats, our userbase doubled since last year; and that's with an yet-to-be-optimized compiler that's an order of magnitude slower than competitors and by some people's standard not yet production ready.
It'll also take a bit for people who loudly push 25-year-old languages like Python and Ruby like holy grail to... die off (no, I don't want them to convert). Perl 6 is a next generation language over them and it'll take next generation of programmers to make use of the new programming paradigms.
What you're probably asking is why hasn't Perl 6 went viral like Swift, Rust, or Go? Well, we don't have a multi-million (or -billion) company backing us, so fanboys and people who are after the latest shiny things aren't flocking to us like to manure. But look around this site: those langs get as much nonsensical comments from the Python-Ruby zealots who are too scared of new languages :)
Perl 6's first production release was less than a year ago. It's a bit unrealistic to expect it to be a "poster child" of anything so fast. If you're old enough to remember, no one gave a shit about Python until at least second version.
Don't worry about popularity. Learn many languages and use what you like using.
- Jedd 10y agoBecause I don't know much about perl, and not much more about Python, and much much less about ruby, would you kindly give a couple of examples of : > It'll also take a bit for people who loudly push 25-year-old languages like Python and Ruby like holy grail to... die off (no, I don't want them to convert). Perl 6 is a next generation language over them and it'll take next generation of programmers to make use of the new programming paradigms. ... the kinds of paradigms or ng features that perl has that python doesn't?
- zoffix222 10y agoPython is a Turing Complete language, so I'd be surprised if it trully lacked a feature and there weren't a library written by a poor soul that implemented it. I am talking more about programming thinking than a feature set. That there's no such thing as Unicode issues or needing to use silly "u" prefixes. That 0.1 + 0.2 == 0.3 reliably that you can write accounting software worry-free and not wonder about why it fails in so many old langs. That you can use grammars to write a mini-language for your specific problem to save yourself tons of generic programming. That you can branch off into a separate processor core with a simple `start` keyword or parallelize a method call on a list of items with just a `>>` hyper prefix or seamlessly communicate a job parallelized over 30 cores with yet another core with a simmple channelled supply without worrying about data races. These features may be present in Python, but way of thinking isn't. A new programmer starting in Perl 6 won't think of multi-threading, Unicode, floating point math as problematic areas and grammars together with full-language maleability that lets you create problem-specific langs instead of a mountain of generic classes is undreamt of by oldschoolers like me.
- acdha 10y ago> That there's no such thing as Unicode issues or needing to use silly "u" prefixes. That 0.1 + 0.2 == 0.3 reliably that you can write accounting software worry-free and not wonder about why it fails in so many old langs. It's interesting that you lead with a bunch of examples which are very old or simply wrong. For example, in any language where you don't think about Unicode you are guaranteed to have encoding issues as soon as you have sufficiently diverse (i.e. real-world) data. If Python 2's u"" prefix offends you so – I must say, hearing a Perl programmer complain about punctuation is a somewhat novel experience – note that Python 3 was released in 2008 which changed to use Unicode by default. In every language, however, you will need to think about file encodings everywhere you read or write data until we finally hit that halcyon decade (century?) where you can assume UTF-8 with a very high level of confidence. Similarly, Python has had decimal-accurate math since the early 2000s so the developer is free to pick whether they value absolute precision over standard IEEE floating point semantics. Perl 6 dynamically switches numeric classes so the simple syntax you show will lose precision at some point depending on the data and order of operations – that's why the documentation specifies Rat as “limited precision” and it means that anyone writing accounting (or, in many cases, scientific) software would explicitly use an arbitrary-precision data type to avoid the classic floating-point math problems: $ perl6 --version This is Rakudo version 2016.10 built on MoarVM version 2016.10 $ perl6 > 123456789 - 1e-5 123456788.99999 > 123456789 - 1e-6 123456788.999999 > 123456789 - 1e-7 123456789 > (123456789 - 1e-1) - 123456789 -0.0999999940395355 Please note that I'm not saying Perl 6 is terrible. This is a well known trade-off which everyone has to learn about if they work in fields where this matters. Perl 6 has arbitrary-precision types built-in so anyone dealing with financial data is simply going to learn to specify that precision is not an acceptable trade-off for performance: > my $a = Num(12356789) 12356789 > $a + FatRat(0.1) - $a 0.099999999627471 > my $a = FatRat(12356789) 12356789 > $a + FatRat(0.1) - $a 0.1 I would suggest focusing on the parts of Perl 6 which you like rather than hurling bricks at other languages. Things like start / hyper sound kind of interesting and it'd be far more interesting to hear about how those work in practice and how you manage issues like communications overhead or shared data than your personal dislikes about some other language.
- 10y ago
- espadrine 10y agoI can think of grammars, junctions, autothreading. Grammars are YACC on steroids. You can very simply say "this parsing state requires reading dot-separated things". Junctions define multiple plausible states. In certain instances, they can look like a feature you know, but they're more generalized than any of those: sum types, switch statements with multiple cases, combined guards, sets… Autothreading gives the ability to automatically parallelize certain constructs (for instance, when an expensive operation happens on a junction). Perl6 also includes features found only in non-mainstream languages, like lazy lists, macros, and runtime addition of syntax. And it has most modern concurrency primitives, unlike most languages which only have one: threads, locks, semaphores, promises, channels, event loops, supplies. To be clear: Perl 6 is not without flaws (marketing and performance, for instance), but it is definitely innovative. It lets you write expressive code more succinctly than mainstream dynamic languages, in a way similar to how Python lets you write expressive code succinctly compared to C++.
- oelmekki 10y agoI wonder : what are those new paradigms perl6 is introducing? I learnt ruby in early 2000', way before rails, because I was attracted to its "it's 100% OO" concept. Now, I use golang, because background jobs have progressively became a capital part of my programs, and I love how it's just about prefixing a function call with a keyword, in golang. The idea of having system programming-like perfs in web doesn't hurt either. What would you say are the groundbreaking new concepts of perl-6 ?
- zoffix222 10y agoI wrote a short answer here: https://news.ycombinator.com/item?id=12890552 https://news.ycombinator.com/item?id=12890552 If you like go's conc stuff, then I'm sure you'll love Perl 6's async/conc/paralel. stuff: https://docs.perl6.org/language/concurrency#High-level_APIs https://docs.perl6.org/language/concurrency#High-level_APIs I wrote an IRC API with Perl 6 that I really love, since it makes it so easy for me to parallelize a plugin's work, while working with an async protocol, all the while connected to multiple servers, all with the same short script: http://perl6.party/post/IRC-Client-Perl-6-Multi-Server-IRC-Module http://perl6.party/post/IRC-Client-Perl-6-Multi-Server-IRC-M...
- oelmekki 10y agoThanks! I'm going to be honest: nothing in what is described seems to me like a new idea that makes me want to try perl6. Floating point safeness is in R, dsl is in ruby, concurrence is in golang. And unicode... I'm not exactly sure what the problem is with other languages, I guess it never hit me. :) That being said, it's cool to see all those features in the same language. I'll keep it in mind if anyone mentions all or most of those as pain points.
- Woodi 10y agoSo, floating point safesness is in R, dsl in ruby, concurency in Go and Unicode in... ? What if you want two features at once ? Or all of them ? ;) Examples: multi wins(Scissors $, Paper $) { +1 }; # dispatch on types my @a = 1..5; say [+] @a; # 15 (a,b,c) Z (1,2,3) # ((a,1),(b,2),(c,3)) my $time = now; say now - $time; class Person does Employee { } use NativeCall; # WOW and MORE ! So ansering: why Perl6 hasn't taken off yet ? Becouse language specification was released 11 month ago with referential implementation (just like Amaya in 1996). So give it 2 years, it will be "fully operational" ;)
- arglebarnacle 10y agoIt's a welcome surprise to see an unreasonable and inflammatory post end with such a good piece of advice. Needless to say the notion that python and ruby programmers are greybeards who need to "die off" to make way for the future of software development is not a rational assessment of the state of the industry.
- zoffix222 10y agoOf course, it's not. But as a developer who doesn't use those two languages my only point of contact with them is via those greybears who tarnish the image of the entire lot ;)
- h8dz7983wdeowq 10y agoLike Larry Wall?