Previous | Next --- Slide 51 of 60
Back to Lecture Thumbnails
matteosantamaria

I'd be very curious to hear what modern languages Kayvon and Kunle think are most powerful/interesting/innovative. In class someone brought up Rust (one of my personal favorites) as a language that makes minimal tradeoffs, and I can also think of Julia and Zim.

german.enik

i'm curious why safety isn't one of the pillars -- cs242 had a similar diagram but with safety substituted for generality

sirah

@german.enik This three pillars shown here is considered in the context of languages for parallel processing and not necessarily from PL design perspective. I think generality is considered more important in parallel processing because of the reusability across different domains.

thepurplecow

Wonder if others have more experience with Rust -- what's the appeal of it? I know it's very popular for building software, but don't know about the details.

ghecko

I've also heard good things about rust but have never looked into it too much. Is its performance better than a traditional language like c++? I wonder what's the big idea, maybe it's time to look into becoming a Rustacean.

jasonalouda

How do we define "productivity" here, especially in terms of how it is different from "performance"?

mcu

@ghecko @thepurplecow The big appeal is that it's a systems language more or less on par with C++ for performance (afaik), but it has nicer ergonomics and eliminates a whole class of memory errors that makes it much nicer to write parallel code.

I've only written a thousand-odd LOC in it, but I found it to be very nice, especially for systems programming. It's a bit steep at the beginning, but I think once you get past the initial barriers you can probably be more productive than in C++? Not a Rust evangelist so I'll leave off here, but I'd recommend you give it a try if you're interested~! At the very least, it changed the way I look at/write C++ code (for the better).

@jasonalouda "Productivity" here refers to the developer's productivity, the ease with which the language allows the developer to produce software. "Performance", on the other hand, refers to the actual performance of the software itself.

Example: - C++ is faster than Python because it's AOT compiled to binary and exposes a great deal of ability for the developer to take advantage of the performance characteristics of the hardware. - Python can be more productive than C++ because it's higher level (in terms of abstractions) and thus allows the developer to produce code more quickly*

  • results may vary; it seems fairly common to hear that languages with lax or highly dynamic type systems can make it harder for developers working on very large projects since stronger type systems may allow for easier maintenance of the developer's mental model of the overall architecture
ammaar

I too was confused about what "productivity" meant while watching the lecture but reading these comments has cleared that up for me. I'd also be interested to see if anyone has any insight on whether work on compilers could bridge the gap between some of these trade offs?

joshcho

The common argument for functional languages is that they will be better in increasingly multi-core computing world. How true is this?

Please log in to leave a comment.