Live data from Hacker News

How to Evangelize a Programming Language

levelup.gitconnected.com

31–40 of 56 posts

Re: How to Evangelize a Programming Language

#31

Does it has cross-platform? One codebase, multiple targets? That's how you evangelize any programming language. In today's environment where the customer wants his solution to work on all devices, the programming language that has the least (zero might be impossible) quirks when targeting different OS'es wins my heart. So far, IMO, there are zero programming languages that do this. Java comes closest but is like only…

> the programming language that has the least (zero might be impossible) quirks when targeting different OS'es wins my heart.

Two languages come to mind (though I think this is an unpopular opinion, I will try anyway):

* Dart (runs really well and cross-platform on desktop, mobile and web) * Haxe (because it can compile to pretty much anything: C++, Java, JS...)

Re: How to Evangelize a Programming Language

#32
post #3

This article has only one real tip: create a high school programming contest for it. The rest is evangelizing a specific language itself, which I won't mention to avoid fueling the gimmick. I think we've been had. In general programming language preferences are subjective. We all think different. I've been in many many debates over language merit. The only language that would truly make one happy is one custom fit fo…

I think that part of the problem is to define data structures in a way that can be produced and consumed in multiple languages, algebraic data types are a good "least common denominator" for this. Also w.r.t. reinventing the schema for databases, I have got a lot of mileage out of deriving the schema from code. Shameless plug, I have this little project ( https://github.com/Morgan-Stanley/hobbes/ ) where we have a se…

Attributes are usually easier to share than functions and algorithms. That's why I suggest using "data dictionaries" nearby. Most common CRUD idioms are readily attribute-able such that we don't need Turing Complete sub-languages for majority of them. We just need useful code "hooks" to customize when needed, which is the usual bottleneck of attribute-driven development.

Re: How to Evangelize a Programming Language

#33
post #24
post #14

Earlier quoted context omitted.

On this note, I still haven't found a language that does broad refactoring as well as C# (with resharper) does. From method extraction, to module, namespace, function renaming, to adding parameters to functions, it just takes care of it. My suspicion is that Java does it as well (but I don't have experience with it), but every other language I've tried lags far behind it. It's been really frustrating to be really get…

Java and intellij does all that.

IntelliJ (the platform, with other names for each language) can actually do this with many languages:

* Java * Kotlin * Groovy * Dart * Go * Elm

These are the ones I've tried myself and can attest to. There are probably others (maybe Rust - but last I tried it, it was still lagging far behind, though Jetbrains seems to be investing heavily on it).

Re: How to Evangelize a Programming Language

#34

PHP did not need anybody to evangelize it

Because it was the right tool at the right time when the web was new and growing rapidly. VB-Classic was similar: it allowed building GUI's with a small learning curve when the alternatives were esoteric and muddled, and thus spread like wild-fire.

Re: How to Evangelize a Programming Language

#35

PHP did not need anybody to evangelize it

PHP was in the right place at the right time back in the mid-1990s. It exploited the nascent web and gained a first-starter advantage. In other words, PHP lucked out.

Most languages need some luck to make it to the top. JavaScript lucked out with the explosive growth of SPA, circa 2010. Python lucked out with the explosive growth of data science and machine learning in the past decade.

Ruby lucked out with the Rails framework.

Java and C# were heavily marketed by Sun Microsystems and Microsoft, respectively. Objective-C and Swift were heavily marketed by Apple. Dart and Go were heavily marketed by Google. Rust had Mozilla. Kotlin had JetBrains.

Re: How to Evangelize a Programming Language

#36
post #14

Can someone with actual real-life in-production-for-a-while in-an-actual-company-with-annoying-customers-who-change-mind-all-the-times tell me about the refactoring story in Smalltalk ? Sure, I know the IDE can change the signature of a function, and stuff like that, but is it enough to actually do broad refactorings with any level of confidence ("broad" meaning "the kind where you realize the next feature requests i…

On this note, I still haven't found a language that does broad refactoring as well as C# (with resharper) does. From method extraction, to module, namespace, function renaming, to adding parameters to functions, it just takes care of it. My suspicion is that Java does it as well (but I don't have experience with it), but every other language I've tried lags far behind it. It's been really frustrating to be really get…

Just to add on sibling's comment.

IntelliJ IDEA is the original tool from the resharper guys (jetbrains). You will find pretty much every feature of resharper natively on IDEA with java/kotlin. Those were ported into resharper.

Jetbrains usually have very good IDEs, I've not used them all, mostly just IntelliJ which looks like the one they prioritize onto, so I recommend you to take a look if you liked the resharper experience.

Also, they have their own C# IDE: Rider, that should have all resharper niceties.

Re: How to Evangelize a Programming Language

#37
post #3

This article has only one real tip: create a high school programming contest for it. The rest is evangelizing a specific language itself, which I won't mention to avoid fueling the gimmick. I think we've been had. In general programming language preferences are subjective. We all think different. I've been in many many debates over language merit. The only language that would truly make one happy is one custom fit fo…

> This article has only one real tip: create a high school programming contest for it.

Yes, but this "tip" was demonstrated by an example. The example is a Pharo-based programming competition, so it's reasonable to say a few words about Pharo. Otherwise, the article would be pretty darn brief!

Re: How to Evangelize a Programming Language

#38
This entire article is nothing but evangelisation for Pharo. Misleading title, worthless post.

I’m not surprised either. The author only ever writes Pharo evangelicals that consistently fail to demonstrate any of the supposed benefits; we’re always to simply believe what is said.

Any body can show me buzz words. Nobody gets points for buzz words, not even for effort.

That’s patently not how one promotes a programming language.

Re: How to Evangelize a Programming Language

#39

This entire article is nothing but evangelisation for Pharo. Misleading title, worthless post. I’m not surprised either. The author only ever writes Pharo evangelicals that consistently fail to demonstrate any of the supposed benefits; we’re always to simply believe what is said. Any body can show me buzz words. Nobody gets points for buzz words, not even for effort. That’s patently not how one promotes a programming…

Evangelization is "preaching"; it's essentially advertising or marketing.

There's no one way to preach or advertise. One can take a number of different approaches. Presenting technical information is one way, the most common way. It's how most languages are promoted. But most languages never succeed with this approach. Most languages never gain much mind share.

So the author has taken another approach, something that is seldom attempted. The programming competition is an original and clever idea.

I'm not sure how one can "demonstrate the benefits" of a programming language. Most languages have been used successfully in software projects (e.g., Crystal, Elixir, F#, Haxe, Julia, Nim, etc.). Does trotting out these projects prove anything?

Re: How to Evangelize a Programming Language

#40
post #28
post #18

Earlier quoted context omitted.

One way that I feel comfortable with is publishing clear, real life-ish examples of what can be accomplished in the language by playing on it's strengths. Debating merits never really leads anywhere, all languages have strengths and weaknesses, all languages are compromises in some respect. I've put quite some effort into the DRY database schema problem over the years. The only reasonable way forward that I've found…

Rather than rely on SQL, why not put the common info in tables? A "data dictionary" (DD). If tools can extract or sync that up to the actual schema, that's a great bonus, but is not a prerequisite. Using things POC annotations is ugly and hard to track. And we don't have to rely on the DD to do everything. Of course intricate business logic should be in app code, but app code shouldn't reinvent the obvious things lik…

Interesting.

I never use annotations in my own tools, I add first class abstractions for whatever database features I need and free form records to shuffle data. So there will be something called a Table, with Columns and Keys. It's not so much reinventing as bridging, an FFI doesn't reinvent the library it imports.

And yes, that means you can't modify the database from the bottom any more. But you're not losing any power, since any random programming language is more flexible and convenient.

Most databases come with some kind of built-in DD, I've used them in Firebird & Postgres to read primary- and foreign keys while I was still investigating the approach.

But it never really clicks for me, because the database is not the software, it's where the software stores its data. Tying application logic and presentation to the relational structure of the data just doesn't make any sense to me.

Post reply on HN