Hacker News new | past | comments | ask | show | jobs | submit login
Kotlin is like TypeScript (gi-no.github.io)
32 points by yoshiokatsuneo on May 19, 2017 | hide | past | favorite | 46 comments

I think we get it, every languages are like Kotlin!

Quite opposite - Kotlin is like every language ;)

TypeScript has structural typing, that is a HUGE difference.

Yes, that would be its biggest differentiator.

Scala has it too indeed, but it's not the default mode and feels awkward, also has known limitations.

The nice thing with typescript is that structural typing makes sense for 90% of the use cases, and for the remaining 10%, you can very easily simulate nominal typing by adding a field like so:

interface Robot { __Robot: true }

>interface Robot { __Robot: true }

I would much prefer if they just added a new keyword to the language, instead of hacks like this.


Ya, I'm not away of any other popular OO language that goes this route. The implications of structural sub-typing are huge, though I guess many programmers wouldn't be able to call it out.

Scala has it. With Shapeless, you can go all crazy with it.

Uhh, JavaScript (via FlowType)?

"Happy languages are all alike; every unhappy language is unhappy in its own way".

    name: string;
    constructor(name: string) {
        this.name = name
You don't have to do this in TypeScript either, you can just do

    constructor(public name: string) { }
Also, the "Empty collections" section doesn't do the same thing, the collections you created in Kotlin are immutable.

And the TypeScript ones have the value `undefined` (unfortunate that strictNullChecks doesn't catch things like that https://github.com/Microsoft/TypeScript/issues/8476).

And for some nitpicking, please be consistent with your semicolons, either use them or don't use them, but don't mix it randomly like that.

Some of the TS examples also include an external library (lodash) to compare features; not sure if that's an apt comparison.

Why this comparison?

Kotlin, Swift, and TypeScript have modern features like type inherence, null-safe, closure, and are supported by big company.

> modern features like type inherence, null-safe, closure

This is one of the more annoying problems with our industry. People rediscover solutions from 60s and 70s and sell them as if they were new and revolutionary...

Still waiting for web developers to rediscover 90's RAD tooling.

I don't think we're ever going to go back to that. Those UIs were pretty static, i.e. you only created the "initial state" in the UI designer, and then modified it during the application run-time (sometimes even creating new widgets in code), or attached some kind of data-binding models to it.

With the popularity of things like React, you now have a powerful way to express how the UI looks in every state, not just the initial one.

I'm 100% we are.

Step 1: People realise that Electron apps look different and do not fit the OS.

Step 2: Big company invests and creates a library that supports Win/OSX looks.

Step 3: Same big company creates a RAD type tooling for it.

We present you a revolution - Big Corp. RAD Tooling 2020 a la Borland Delphi 2007.

>Step 1: People realise that Electron apps look different and do not fit the OS.

This is not an issue for most people. I like to use Spotify (the desktop app) as an example - it's a pretty good looking app, works nicely, and yet it uses an HTML-based UI.

Microsoft's own UWP also looks vastly different than native Win32-based apps.

The resource usage and slowness of Electron apps is a problem, but that is caused by using the entire browser runtime. When it comes to the capabilities of a UI framework, one of the questions I ask is "Could you build something like Spotify's UI with this? How difficult would it be?".

I really wonder whether something like electrino.js solves the problem of apps being a memory hog. So far just a demo preview AFAIK, but they nailed the problem of binary size pretty well.

I guess the question boils down to whether a single tab in a browser which is properly managed by OS can compete with a good old native desktop app.

Dunno, may be you are right. With the advance of flexbox there finally would be a possibility to do good old delphi-like anchors for responsive UI. In a WYSIWYG editor. Without spitting out hardly maintable brittle javascript which simply manages layout (something which is framer.com/other designer tools can do right now).

So far the facebook stack and react-desktop seems to be the best candidate for that description, but I don't neceserily think people would focus on getting it to the desktop styling. Universal Material UI (or similar?) probably would overtake that approach.

So where is Google "Blend" for ChromeOS?

Now we just need something which would take care of the 'R'. The time you needed to develop an app with those 90's RAD tools wouldn't even be sufficient to setup the build pipeline for those trendy JS frameworks.

I will only agree, the day someone makes a RAD based React WYSIWYG editor that can at very least compete with Microsoft Blend, Android Studio or XCode just to give a few examples.

> type inherence, null-safe, closure

Modern? Are you serious?

I laughed so hard :D

derived from Swift is like Kotlin: https://github.com/Nilhcem/swift-is-like-kotlin

I guess that the next one will be: "Kotlin is like Rust", or perhaps there should be "Kotlin is like Go" first?

Why not do "Kotlin is like PHP" or "Kotlin is like Visual Basic 6" immediately?

"Kotlin is like Java" would be pretty funny.

Could be fun.

You mean like Go is like Algol?


Maybe the generalized version is simply:

"All these new languages with C-derived syntax and automatic memory management are pretty much the same -- so pick the one that is most supported on your target platform, get to work, and don't worry about it."

I'm kind of expecting someone to do a "Meta-Kotlin" next: a language that has the common intersection of features from Swift, Kotlin, C# and TypeScript, and offers tidy code generation for any of these.

Kotlin isn't much like Rust. A comparison to Go would be interesting, especially now Kotlin has coroutines.

> "Kotlin is like Go"

Curious how they would relate all the features Go lacks.

If I squint my eyes hard enough TypeScript looks like a LISP

maybe because it's javascript, which is borrows from scheme, which is a lisp?

let x = 1

const x = 1

val x = 1

var x = 2

It's unfortunate each language has a different keyword for constants and variables.

This is getting ridiculous

Kotlin getting love, this is nice, although in a very peculiar, syntax-comparison type of way.

Is this Kotlin the new "Erlang" of the HN' first page?

I wonder what's the oldest and/or most maligned language that you can use to make a similar comparison that's still somewhat valid...

"for index in 1–5" is like "for let index of underscore dot range 1–6" in the same way Lisp is like COBOL.

Kotlin is like Swift

Kotlin is like TypeScript

that infer

TypeScript is like Swift

am I getting right? or Is there anything else?

Type script is like c#? Scala is like c#?

Is go like scala?

Everything is C (or lisp).

Kotlin is also like Kotlin

Now, are there languages for which that doesn't hold true?

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact