-
Notifications
You must be signed in to change notification settings - Fork 104
Add "Why Haskell?" section (alternative) #342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -76,6 +76,62 @@ <h2>Try it!</h2> | |
|
||
<br> | ||
|
||
<div class="features"> | ||
<div class=" container "> | ||
<h2>Why Haskell?</h2> | ||
<div class=" row "> | ||
<div class=" span6 col-md-6"> | ||
<h3>A new paradigm</h3> | ||
<p>Express your ideas clearly and learn a new way of thinking about programming. Based on lambda calculus Haskell is a | ||
purely functional programming language that features referential transparency, immutability and lazy evaluation. | ||
Concepts that will blow your mind | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Both grammatically and stylistically, I think "Concepts that will blow your mind" could be improved. Maybe something like: "learn a new way of thinking about programming: functional concepts like referential transparency, immutability and lazy evaluation are a joy to learn, and will expand your horizons and abilities" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's grammatically wrong with it? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Concepts that will blow your mind" isn't a sentence, it's a phrase, so it sounds weird here (to me, but mileage may vary) as opposed to e.g. "These are concepts that will blow your mind". There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can use a semicolon instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It still sounds weird to me, because either side of a semicolon should be a sentence. I'd say a comma would work: "...and lazy evaluation, concepts that will..." There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is a classic place to use an em-dash :) although they've been getting a bit of a bad reputation thanks to ChatGPT and friends overusing them
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How about: "Haskell is pure and lazy, has immutable data structures, and lazy evaluation: these concepts will expand your programming horizons. |
||
— relearn programming while having an absolute blast. | ||
</p> | ||
</div> | ||
<div class=" span6 col-md-6"> | ||
<h3>Composition and predictability</h3> | ||
<p>Reason about large pieces of code and compose them easily. There is no global state | ||
or mutable variables obscuring the meaning of your program. The strong type system makes sure there are no surprises | ||
— never again will you have to guess what your program does at execution time. | ||
</p> | ||
</div> | ||
</div> | ||
<div class=" row "> | ||
<div class=" span6 col-md-6"> | ||
<h3>Declarative</h3> | ||
<p>Write your programs declaratively by utilizing the power of pure functions and algebraic data types. | ||
In Haskell we don't write how a program should be executed, we just describe its logic | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe: "Don't worry about evaluation order or execution details when it's not relevant to your goals - just write a program by describing its logic". btw, I worry that the word "logic" will cue people to think of "logic programming". |
||
— never again be forced to think about evaluation order or execution details. | ||
</p> | ||
</div> | ||
<div class=" span6 col-md-6"> | ||
<h3>Performance</h3> | ||
<p>Squeeze out the last ticks of your multi-core processors, thanks to best-in-class support for async, | ||
concurrent and parallel programming... made possible via garbage collection and green threads. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the "... made possible via" feels grammatically weird. Just "parallel programming...This is made possible by" would be better, I feel There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Starting another sentence breaks the flow. We could replace "via" with "by" though. Not sure that makes much of a difference. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Then I'd just avoid the "..." and use a comma. |
||
Use advanced streaming libraries for ultra efficient data processing. | ||
</p> | ||
</div> | ||
</div> | ||
<div class=" row "> | ||
<div class=" span6 col-md-6"> | ||
<h3>Abstraction</h3> | ||
<p>Build powerful abstractions that are not possible in other languages. Only your imagination is the limit, due to | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Only your imagination is the limit" feels a little vague. Why not just "Build powerful abstractions that are not possible in other languages, thanks to polymorphism...". Rather than "has its roots in programming language research", why not: "has a design deeply rooted in programming language theory". There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've been thinking to ditch this part and replace it with:
Which will then more nicely correlate with an alternative headline described here: https://discourse.haskell.org/t/emphasize-why-haskell-on-haskell-org-landing-page/12036/47 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sounds good. Minor note: "via the latest functional programming principles". "rock solid" not "rock stable". I'd personally avoid "tricks" and replace it with "concepts". |
||
polymorphism, type classes and more advanced typesystem features. | ||
Haskell has its roots in programming language research and will always be at the forefront of expressivity. | ||
</p> | ||
</div> | ||
<div class=" span6 col-md-6"> | ||
<h3>Excellent tooling</h3> | ||
<p>A tooling story that's truly amazing: spawn your toolchain with GHCup, build your project with cabal, get editor integration with haskell-language-server | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Feels a little hyperbolic. How about a more understated: "Simple, effective and modern tooling: spwan ..." There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Simple" is a rather controversial property when it comes to tooling and it's unclear to me what "effective" would mean. I think having an amazing tooling story is our goal. Yes, we're overstating a bit. Again: the hyped up language is on purpose. Your proposed wording makes it a bit more dry, in my opinion. Those are different styles. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's fair. But while I think Haskell's tooling is very good (especially compared to 10 years ago when I started using Haskell), is it really a core feature that should be used as an argument for adoption? It seems to me that the obvious way for the tooling to shine is that it's now easy for people to spend 10 minutes trying out Haskell, and have an straightforward time getting set up. I'm not opposed to less dry language, stylistically speaking, but this seems like an odd target for hyperbole. Should tooling even aim to be amazing (rather than just so straightforward that you never have to think about it)? The things I'd want to be overstated about are how Haskell is pure, makes refactoring complex code easy, etc. |
||
— everything at your fingertips. | ||
GHC is the next generation compiler that supports all of your favorite platforms. | ||
</p> | ||
</div> | ||
</div> | ||
|
||
</div> | ||
</div> | ||
|
||
<div id="community-wrapper"> | ||
<div class="videos"> | ||
<div class=" container "> | ||
|
@@ -519,3 +575,4 @@ <h3>Psst! Looking for the wiki?</h3> | |
</div> | ||
</div> | ||
</div> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are "express your ideas clearly" and "learn a new way of thinking about programming" in the same sentence? They seem like different (though connected) ideas. Seems better to me to focus on the latter here, and save the former for a different section.
"Based on lambda calculus": should have a comma after this, but also I'd advocate for dropping it. I think there's a careful balance between new terminology and ideas being intriguing and being off-putting. Having just a few seems best, like "pure", "statically typed", "lazy", "immutable" and "functional". Referential transparency and lambda calculus feel like too much, at least for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find this less compelling.
I want to start every section with an "action" that involves the reader. The proposed wording feels a bit more dry to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I think we could move "express your ideas clearly" somewhere else. But where?
Can you suggest an actual wording? I'm a bit at loss how to put all this together.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant that you start with "Learn a new way of programming", then my sentence.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd maybe put "express your ideas clearly" in the declarative section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See below