C is essentially the recognized, practical "high-level portable
assembler" language. It's the closest thing to assembler that allows
production of portable source code that has been proven to work for
developing a huge range of software (drivers, operating systems,
embedded control, servers, desktop applications, etc...) for a huge
range of hardware and operating systems.
C is essentially never "too big" or "too slow". Combined with its huge
mindshare it seems almost permanently ensconced as the "almost bare
metal" tool. Sure something will likely dethrone it someday -- but I'd
not bet on that day being soon.
On the other hand, is C truly a high enough language for /effective
/development of some of the world's biggest applications? Not really.
Is it really the most effective tool for developing smaller applications
that don't really have to be "to the metal"? Arguably not. As such C
will frequently be passed over for many of these sorts of projects (at
the very least by C++, but often by Java, C#, and a long list of languages).
--
Jess Holle
On 6/11/2014 2:28 PM, clay wrote:
Your reasons for preferring C are stability and long term longevity?
Are those factors really that important? If a language only lasts 40
years rather than 100 or 1000 years, do you actually care? Like in a
roaches will outlast human kind sort of way? Is stability the big
thing holding you back from Java or C#? For all the legitimate gripes
about Java/C#, basic stability and compiler crashes generally are not
among them.
Secondly, that isn't consistent with your preference of Scala on the
JVM and Idris off the JVM. I find it hard to believe that Scala+Idris
have better stability than Java and will be around longer than Java. I
prefer Scala over Java for the advanced elegance, conciseness, and
expression, but IMO, Scala has been a buggier language than Java, it's
less serious about backward compatibility, and it probably won't last
as many decades into the future as a legacy technology as Java will.
Other tools might not have "the VM cost", but they all have some
performance profile that can be quantified and logically compared.
Java often does fairly well in those tests.
On Wednesday, June 11, 2014 11:41:38 AM UTC-5, Ricky Clarkson wrote:
I'm not saying I agree, but there are reasons. C works. You
aren't going to get a compiler segfault, then discover a debugger
bug while trying to debug the compiler, then fix that only to find
that your build tool doesn't work when your path contains spaces,
and then find that you can't read MP3 files without an extra
library that hasn't been maintained since the big bang, etc. If
you need to write your own C compiler for any reason, nobody is
going to sue you.
C will still exist when Objective-C, PHP, ASP, VB, Perl, Python,
Ruby and probably C# and Java, have all bitten the dust, because
it *actually* works everywhere and is kind of a base on which
pretty much everything else can be built without incurring 'the VM
cost', however imaginary or real that cost may be.
It's also almost one of *the* bases, barring the 100s of special
cases it is a really simple language, kind of fundamental the same
way Scheme, Smalltalk and Forth are (i.e., hard to reduce further
without losing real capability).
On Wed, Jun 11, 2014 at 7:45 AM, clay <clayt...@gmail.com
<javascript:>> wrote:
On Friday, June 6, 2014 12:31:34 PM UTC-5, KWright wrote:
Nope!
C or Idris, I'll also accept Assembler.
and Scala's the least bad you can get if otherwise tied to
the JVM. :)
I completely understand why you prefer Idris/Haskell over
Scala and Scala over Java.
But why on Earth would you also prefer C? That seems to go the
opposite direction and be a big step down from Java?
All the things Scala fixes from Java are broken in C as well:
if expressions, for/monad comprehensions, focus on
immutability, pervasive type inference, cleaned up generics,
array syntax that is unified with generics (Array[Type] rather
than Type[]), language level currying and partial functions,
overridable var/val and ideal property system, singleton
objects instead of static.
And C/C++ is worse than Java: #define/#include, header files,
__declspec, library dependency system is a wreck, ABI issues
across binaries, hairy legacy issues that are far worse than
Java, wildly varying implementations of the "standard", super
complex networking/threading/file apis that make the Java
standard library a work of art. Did you ever use COM/ActiveX?
Have you ever worked with international strings in C? It's a
major pain, it's wildly non-standard between different
compiler vendors, and makes every other language ridiculously
elegant in comparison.
Programmers often hate the tool they use for work, because
they have to deal with lots of legacy code and annoying
coworkers with conflicting styles. When they use another
language/tool on the side, they can do everything exactly how
they want, so the other tool seems better. If you had to deal
with large amounts of typical legacy business C code, I expect
you would appreciate Java a lot more. And if you used Idris
for work with tons of legacy code and annoying coworkers, it
would be better because Idris/Haskell are so strict about
enforcing certain conventions, but it still wouldn't be ideal.
--
You received this message because you are subscribed to the
Google Groups "Java Posse" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to javaposse+...@googlegroups.com <javascript:>.
To post to this group, send email to java...@googlegroups.com
<javascript:>.
Visit this group at http://groups.google.com/group/javaposse
<http://groups.google.com/group/javaposse>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google
Groups "Java Posse" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to javaposse+unsubscr...@googlegroups.com
<mailto:javaposse+unsubscr...@googlegroups.com>.
To post to this group, send email to javaposse@googlegroups.com
<mailto:javaposse@googlegroups.com>.
Visit this group at http://groups.google.com/group/javaposse.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Java
Posse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to javaposse+unsubscr...@googlegroups.com.
To post to this group, send email to javaposse@googlegroups.com.
Visit this group at http://groups.google.com/group/javaposse.
For more options, visit https://groups.google.com/d/optout.