Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Bill McEnaney

macrumors 6502
Original poster
Apr 29, 2010
295
0
Sure, being useful is something to like. So is the way my buddy can do plenty of work with a line of Perl. I probably am the problem, not Perl.
Being useful is something to like. Few things are all bad. I'm not sure if Perl is an improvement over more traditional shell programming, but neither one is wonderful for large programs.

Eiffel has always impressed me favorably because Bertrand Mayer, its designer, seemed to know exactly what features to give it and why it needed them. It's not a collection of corks, if you will, not a collection of features that plug holes. He designed it from scratch, probably after he knew about, and perhaps invented, design by contract. Python is eclectic, but its features don't seem thrown together.

I like C++ being multi-paradigm, but it's a matter of degree. Structured programming for implemented algorithms, an pseudo-object oriented system for cleaner interfaces, RAII and exceptions for easier error handling, etc. But STL algorithms have always be awkward, and I think grafting on pseudo-functional language stuff will only help in a minor way. C++ is complicated enough, adding more random stuff to plug holes reminds me of nothing so much as they way MS seems to write their office software.
 

qtx43

macrumors 6502a
Aug 4, 2007
659
16
I probably am the problem, not Perl.
Nah, you're not the problem. Perl really is a mess.
Eiffel has always impressed me...
At this point, Eiffel can be an academic exercise or a lone obsession, but that's about it. People say how productive they are in lisp or smalltalk or eiffel, but people keep using C et al. Albeit after the popular languages have stolen all the neat features from the academic languages. I guess structured programming gives you more freedom to do it your way. For example, if I don't want to use garbage collection, and there are times when it really must not be used, then Eiffel will not oblige me. So gimme the multi-paradigm languages ...just don't go too crazy with it (cough*C++0x*cough).
 

withoutaface

macrumors newbie
Sep 20, 2008
9
0
Favourite is difficult (as I'm sure has been said), depends what I want it for.

C++ is probably my primary language that I'll use when writing algorithms or such, simply because it's so much faster than any of the interpreted languages and I find C memory management inserts too much intolerable boilerplate when all I want is a dynamically resizable container (for example).

Java and C# elsewhere. Usually the former if it's something command line and the latter otherwise, because the tools for interface design in Visual Studio (WPF/XAML) vastly outstrip anything in NetBeans (very big fan of Eclipse though). Would be really wonderful if there was a proper .NET framework for OS X.
 

Bill McEnaney

macrumors 6502
Original poster
Apr 29, 2010
295
0
I agree with you, qtx43, when you say that Perl is a mess. But I probably should have thought harder before told my buddy that I didn't like anything about it. As you said, being useful is something to like, and Perl does make some chores very easy, for my friend at least. Perl certainly isn't all bad.

Maybe Eiffel is only an academic exercise when everyone, except a few obsessors, is using Eiffel. For me, that's sad because many programmers may be ignoring the language ideal for what they need to do, whether that language is Eiffel or another language. Correct me if I'm mistaken. I suspect many use C, C++, and Java, say, mostly because they're among the most, if not the most, popular programming languages in the programming industry.

If I use Eiffel, I can still get C's benefits because some Eiffel compilers make the computer translate Eiffel into C. SmartEiffel's compiler does that, for example. You can tell the machine not to generate garbage collection code, too.

If I went back to professional programming, I would write in any language the company told me to write in. For now at least, I enjoy the luxury of using any language I want to use.
Nah, you're not the problem. Perl really is a mess.
At this point, Eiffel can be an academic exercise or a lone obsession, but that's about it. People say how productive they are in lisp or smalltalk or eiffel, but people keep using C et al. Albeit after the popular languages have stolen all the neat features from the academic languages. I guess structured programming gives you more freedom to do it your way. For example, if I don't want to use garbage collection, and there are times when it really must not be used, then Eiffel will not oblige me. So gimme the multi-paradigm languages ...just don't go too crazy with it (cough*C++0x*cough).
 

qtx43

macrumors 6502a
Aug 4, 2007
659
16
...
Correct me if I'm mistaken. I suspect many use C, C++, and Java, say, mostly because they're among the most, if not the most, popular programming languages in the programming industry.
...
I have a slightly different opinion, but I don't really know if either one of us is correct. Would have to do a scientific poll or something. Anyway: I choose a language to use from among the set of popular languages. The popular languages have plenty to offer. And being popular in an of itself does come with advantages (a list of advantages is left as an exercise for the reader). If an academic language really had some compelling feature, or did something a lot better, not just marginally better, then sure I'd use it. But like I said before, the academic features make their way into other languages, and I'm not living on the bleeding edge. I don't like bleeding. I occasionally look at other languages, I did learn Haskell, but have never written anything significant in it, so maybe saying I 'learned' it is an overstatement. Anyway, I didn't really learn anything in the way of general principles that I didn't already know from math and other languages. But it was interesting.
 

Bill McEnaney

macrumors 6502
Original poster
Apr 29, 2010
295
0
I agree with you, I think, qtx43. In the post you've just answered, I help my previous opinion partly because most colleges I know of seem to teach C, C++, and Java. You'll find academic languages at the State University of New York at Albany, where I earned my B.A. degree. Although the computer scientists, or more likely the graduate students, taught C++, professors expected students to learn other programming languages independently, without taking courses about them. SUNYA's computer science degree programs were largely theoretical, which may be why the professors taught few languages. Professors taught me programming language after programming language when I was earning my two-year degree. So looking back, I'm sorry I got that degree: too much practice, too little theory.
I have a slightly different opinion, but I don't really know if either one of us is correct. Would have to do a scientific poll or something. Anyway: I choose a language to use from among the set of popular languages. The popular languages have plenty to offer. And being popular in an of itself does come with advantages (a list of advantages is left as an exercise for the reader). If an academic language really had some compelling feature, or did something a lot better, not just marginally better, then sure I'd use it. But like I said before, the academic features make their way into other languages, and I'm not living on the bleeding edge. I don't like bleeding. I occasionally look at other languages, I did learn Haskell, but have never written anything significant in it, so maybe saying I 'learned' it is an overstatement. Anyway, I didn't really learn anything in the way of general principles that I didn't already know from math and other languages. But it was interesting.
 

pilotError

macrumors 68020
Apr 12, 2006
2,237
4
Long Island
SUNYA's computer science degree programs were largely theoretical, which may be why the professors taught few languages.

My background is largely the same. The only language taught in school was assembler, since it was tied to a specific chip. You got NO help from anyone in learning a language, it was up to you to pick it up. We were given a choice of either Pascal, C or Fortran, since that was all the professor knew (no C++ at the time :eek: ).

I see students get frustrated at that, and with CS being fairly new back then, nobody knew any better. I can't tell you how immensly helpful the theoretical side was in my career. Your thought process is how you can solve a problem or design a solution. I never think about how I would do this in a particular language.

It's even more helpful, since being a consultant, you don't get to choose the language you build something in. You're really left just figuring out how to apply the chosen languages features to your solution.
 

Bill McEnaney

macrumors 6502
Original poster
Apr 29, 2010
295
0
They taught only assembly language? That's astounding. Some students were taking a course about Univac 1100 assembly language when I first took a CS course at SUNYA, when I was still in high school. But back then, everybody wrote in Pascal there at the university.

I've been blessed, thank God, because for me, programming languages have always been easy to learn. Maybe that's partly because the community college kept teaching me language after language. Once I saw similarities among programming languages, I thought, "If you've seen one, you've seen 'em all."

My friend Michael Covington, who directs the AI Lab at the University of Georgia, says his students complain about too much theory in UGA's computer science courses. I guess don't know what we know: They don't know how much theory would help them in practice.

If you're like me, you're often too detail-oriented. I'd take a course about a programming language, we'd go straight into syntactic details, how to use various statements, etc. But the teachers didn't give us an overview. They didn't say much about algorithm design either. So for me, programming was much like mere symbol manipulation.

I got my philosophy degree after I became a professional programmer. Maybe I should have earned it before I learned how to program. But even my philosophers sometimes taught details right away.

At my fist job, I taught accountants how to use IBM PCs, Lotus 123, and other programs. Being the office's technical guy, I began with detail when I taught the Lotus 123 course. I told the accountants about cells, formulas, how to move from cell to cell . . . Then an accountant asked a real eye-opener: "This is great, Bill, but what can I use it for?" Before she asked that, it never occurred to me to tell the accountants that an electronic spreadsheet was like a huge paper one and that Lotus 123 could help them automate the work they did on paper spreadsheets.
My background is largely the same. The only language taught in school was assembler, since it was tied to a specific chip. You got NO help from anyone in learning a language, it was up to you to pick it up. We were given a choice of either Pascal, C or Fortran, since that was all the professor knew (no C++ at the time :eek: ).

I see students get frustrated at that, and with CS being fairly new back then, nobody knew any better. I can't tell you how immensly helpful the theoretical side was in my career. Your thought process is how you can solve a problem or design a solution. I never think about how I would do this in a particular language.

It's even more helpful, since being a consultant, you don't get to choose the language you build something in. You're really left just figuring out how to apply the chosen languages features to your solution.
 
Once I saw similarities among programming languages, I thought, "If you've seen one, you've seen 'em all."

There are definitely lots of similarities but I have found, both in myself and others, that one often tends to write one style but with different syntax. My early Python was basically C++, just with different words. I treated variables as statically typed and applied design patterns. It took much more than learning the symbols to get to know the language (which I would class as my favourite, in keeping with the thread).

Much like spoken languages, I think there is a massive difference between being "able to speak", being fluent and having complete mastery.
 

Bill McEnaney

macrumors 6502
Original poster
Apr 29, 2010
295
0
I'm fluent in about two of the roughly 11 programming languages I've written in. But I've always tried not to use one programming language's style in any other programming language I've written in. Sometimes it's hard to impose one language's style on another language. Try imposing, say, a C-style on a Prolog program. Imposing C-style on Prolog seems impossible, for me, at least.

After I discovered Prolog and logic programming, I knew I was mistaken when I thought that, if you've seen one programming language, you've seen them all. APL should have disproved me false opinion long before I'd read anything about Prolog.

I remember an ancient book, where the writer wrote Pascal as though it were C. That almost startled me because I'm most fluent in Pascal. He put call-by-reference arguments in the argument lists of a function definition, not a great thing to do when you don't want your functions to cause side effects. The author included more than one "return" statement in a function when the style rules I'd learned told me that each function should have only one entry point and only one exit point. He wrote boolean-function names that you wouldn't expect to see as boolean-function names . . . I learned the ideas the author wanted to teach me. But I deliberately didn't imitate his coding style.

By the way, I put the word "return" between quotation marks because Pascal has no return statement. So instead of the word "return . . .,"you assign a value to the function's name. You might write:

Code:
function Tangent(Theta: real): real;
   begin
      Tangent := sin(Theta) / cos(Theta)
   end;
There are definitely lots of similarities but I have found, both in myself and others, that one often tends to write one style but with different syntax. My early Python was basically C++, just with different words. I treated variables as statically typed and applied design patterns. It took much more than learning the symbols to get to know the language (which I would class as my favourite, in keeping with the thread).

Much like spoken languages, I think there is a massive difference between being "able to speak", being fluent and having complete mastery.
 

rev316

macrumors regular
Nov 7, 2004
156
0
C++. I enjoy the control, and the modern extensions to C.

But I do enjoy languages with a managed runtime...

Answer: No favorite, but I have several preferred languages as the best tool for the job.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.