8 ms·
What Good Are C, C++, and Java?
- simplicio 11y agoI can think of a lot of things to call C++, but "boring" isn't really one of them.
- jahnu 11y agoEstablished would be a better term.
- alediaferia 11y agoWhy not making this list open source? I mean, this is not complete at all and you won't be able to fill it in all on your own. Just my 2 cents :)
- Kurtz79 11y agoI don't think it's meant to be a comprehensive list, just a reminder that languages that many people consider "dead" or just "old fashioned" are in reality quite pervasive and power up many of our daily tools and apps.
- innguest 11y ago... because those maintaining those dinosaurs haven't died yet and are holding back the next generation of programmers. Thanks, green-fielders, for ignoring all Programming Language research. If it weren't for you we'd be "stuck" with Smalltalk instead of Java and Lisp instead of C. So thanks (not).
- nickcano 11y agoAre you sour because you don't understand pointers, or something? I'm 22 and I almost exclusively use C++, C, and x86 assembly. These types of languages are not going anywhere, and a fair portion "the next generation of programmers" is perfectly fine with that.
- innguest 11y agoNo. I understood and wrote tutorials on pointers when I was 17. I never understood what people don't get about them. They literally exist in real life in the back of any indexed book. I'm just angry that new programmers still have to pay towards the technical debt of old school programmers. It's sad to see that we're losing new programmers to old paradigms. Just so you know the state of the art, there are people out there mathematically proving that the operating system cores they wrote have no bugs. So long as you insist on managing everything yourself because "speed, man" you will continue to work overtime chasing bugs that aren't your fault (the fault is squarely on the paradigm called Von Neumann). Good luck wasting your life away making programs the most complicated way possible so you can feel productive. I'll be putting these Haskell Lego pieces together over here and let the compiler do all the work that you do manually. Because apparently your type of person (the type that accepts that status quo and thinks it's the best we've got and doesn't contribute to pushing for better things) will keep coming - these types of people are not going anywhere.
- nickcano 11y agoAnd yet, under almost every high-level language that "does all the work that I do manually", what is there? Under Python in C++ Under PHP is C++ Under Haskell is a variant of C called C-- Under Lua is C Under Perl is C Is this because "the dinosaurs haven't died yet"? No. It's because writing a high-level programming language almost always requires a lower-level language. Under all of your high-level abstractions, there needs to be some compiles-to-assembly language that has access to memory management. Under all of your fancy high-level language debuggers, there needs to be some disassembly and translation of the assembly code to match the symbol databases for your high-level code. Under all of your binaries, there needs to be a kernel that can translate API calls, handle interrupts, dispatch exceptions, manage memory protection, and schedule threads. Can you do all of this with Haskell? Sure. But the first Haskell compiler written in Haskell needs to be compiled by something. It can be C, C++, C--, or even assembly for all I care, but it has to exist. Even the first C compilers needed to be written in something that wasn't C. The bottom line is that it has nothing to do with "technical debt". These languages exist because they can work on hardware without heavy frameworks weighing them down. They rely on the bare system, and not on a bunch of abstractions. And that's why they can be used as a layer between hardware and the much-needed abstractions brought to us by high-level languages. These "old" languages have many strengths, and you're foolish to write them off just because their strengths don't fit your use-cases. Without the programmers that are "lost" to these "old paradigms", you would have nobody to maintain, develop, or secure your new paradigms. And that's a consequence that only considers one of the many strengths of these languages; there's many more consequences that we'd face if nobody new learned how to use them.
- joshuapants 11y ago> Also, does anyone know what EC2, S3, and Redshift are written in? Well, Redshift is in C with some Python
- chillingeffect 11y agoOne simply must admire the optimism of another who proposes to publish a list of desktop apps written in C++. Meanwhile Javascript is "so ubiquitous that making a list seems a bit pointless." :)
- bthrn 11y agoWe should also consider that a lot of popular interpreted languages -- Ruby, PHP, Python, JavaScript -- are implemented in 'boring' C/C++. Abstraction is a beautiful thing, but we should not forget our roots!
- jtreminio 11y agoI recently read someone saying that there exist so many interpreted languages built on top of C because no one really wants to write C, they would rather have a language built on top of another language. After starting to learn pure C myself, I have to agree.
- deleted 11y ago[deleted]
- nice__two 11y agoThis is so kindergarten-level, I have no idea why it's on HN. BTW, Stroustrup himself has a list of applications written in C++: http://www.stroustrup.com/applications.html http://www.stroustrup.com/applications.html
- oskarth 11y agoI see you are new to HN. Welcome to the community! In case you haven't seen it already, I would like to draw your attention to the HN guidelines posted here: https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html Specifically the part that says Avoid gratuitous negativity. That means that your first sentence could probably be phrased in a different way, for example in terms of why you think the list of technologies isn't meaningful, or why it's a bad metric. On HN it's also generally frowned upon to complain about things being posted - if you feel it's truly off-topic, you are free to use the flagging privilege. This requires a certain amount of karma to use, though.
- swalsh 11y agoI once watched a video about languages by I believe the designer of F# (could be wrong). He talked about a graph with a horizontal axis measuring "elegance". On the right hand end is your highly elegant mostly functional languages. On the left hand side are the rugged languages like C++ very few people would call it elegant. However on the vertical axis is Utility. on the bottom are "not very useful at all", and at the top is "very useful". These languages are solidly in the upper left hand. The ultimate goal is to find something on the upper right hand side... but nothing has quite achieved it yet.
- vog 11y ago> These [low elegance] languages are solidly in the upper left hand [high utility]. This may be the result of survivor bias. Of course there are also non-elegant languages that aren't useful, but these won't appear in such a diagram, because nobody remembers or uses them anymore. (Exceptions may be esoteric/fun languages like Brainfuck, although these could be considered "elegant" from a certain point of view.)
- nearmiss 11y agohttps://www.youtube.com/watch?v=iSmkqocn0oQ https://www.youtube.com/watch?v=iSmkqocn0oQ
- swalsh 11y agooh cool, that's the same guy... same concept, but different video.
- malkia 11y agoI really like sqlite, lua and luajit's "C" implementations. For C++ I think Qt is pretty reasonable, also the Unreal Engine. I'm using Java at work at the moment (Google Web Toolkit mainly, and learning it on the fly), but feeling the love in there. Some things are crazy (enums :)), others looked strange at the begining (dependency injection), but I really like the interface / class split - the interface "Set" vs the implementation "HashSet" (or something else).
- yarper 11y agoWhat Good is Green? The following things are green; trees grass moss apples ...