Re: What languages do you regularly use besides forth?



John Passaniti wrote:
Elizabeth D Rather wrote:
That kind of excessive specialization destroys judgement.

Does speaking only English most of your life "destroy judgement"? It sure plays hob with your ability to speak in other languages, but if speaking other languages isn't a requirement for you, how is it harmful?

...

Surprisingly (to me at least), there is a Wikipedia page that talks about this:

http://en.wikipedia.org/wiki/Sapir-Whorf_and_programming_languages

If I were in the general market as a programmer it would be a limitation, sure, but I'm not. I've had a wonderful career of which the last 30+ years have been in developing software systems using Forth. The projects have been very varied, all interesting, and virtually all highly successful.

But here's my question, which is obviously rhetorical: In the last 30+ years, how many of the projects that you've worked on would have benefited from a knowledge of other programming languages and their paradigms? I'm not talking necessarily about other procedural, imperative languages because in terms of programming, the kind of thought process you apply when using Forth is likely the same you would use with other procedural, imperative languages (at least it is for me). I'm talking more about programming languages that present very different models for computation. For example, languages like Prolog, APL, Lisp, Mathmatica, CLU, Max, etc.

Just as we tend to respond to questions about which chip or which Forth is best by asking what one intends to use it for, the answer to this depends a lot on what kind of programming one is doing. FORTH, Inc. has tended to specialize in embedded-type applications, and although some have required extensive trig (e.g. motion control), they don't tend to be computationally intensive in the sense that Mathematica, for example, is. We have implemented some inference engines and other AI-type tools, and studied other approaches to learn algorithms. This didn't require actually developing a programming capability in, say, Prolog or Lisp, however.

It's often said here in comp.lang.forth that you can make Forth whatever you want it to be. If your application would benefit from constraint-based logic model of Prolog, or the array-based model for APL, or the data-flow model of Max, you could add such facilities to Forth. And sure, you can do that. But if you don't know the underlying models these languages use, how would you even know that you would want to add those models to Forth?

It isn't necessary to learn to program in a language to study algorithmic approaches to problems of interest.

The point being, that not all languages are alike. Each language (especially those that introduce novel models for computation) increases your vocabulary. Learning different languages isn't so much about figuring out their syntax, or how to run the compiler, or what crazy IDE the language may be chained to. Learning different languages is more about seeing a potentially different way to solve a problem.

But wrestling with syntax, compilers, and IDEs is ferocious overhead when what you're really interested in is a conceptual approach.

You yourself talked about this kind of thing a while back. You talked about a database system someone wrote that was slow. They couldn't speed it up because they were bound to thinking in terms of the system. Some insight in a different representation of the problem resulted in a Forth solution that was much faster. Generalizing that, your ability to look at the problem from a different perspective is really what resulted in faster database lookups, not Forth directly. So one would expect that if you could look at a problem from more perspectives than you do now, you might have additional insights in other models. And regardless of if you chose a language that directly used that model, or if you added support for that model in Forth, the result is the same.

Well, this has been the big advantage of working as a company rather than as a lone individual. Over the years we've employed many very bright, capable programmers and engineers who have brought in a lot of fresh insights and approaches. I'm a big advocate of taking a fresh look at design issues. But the original question involved learning other programming languages, and on that rather narrow issue, I have not found it necessary. And some really extraordinarily creative and capable programmers I've ever worked with have never programmed in anything but Forth.

I guess this is a long-winded way of expressing the old adage, "if all you have is a hammer, everything looks like a nail." Some of that is probably diminished by your experience, but can you really say you wouldn't have benefited from seeing how other programmers using other languages would look at problems?

Well, we have on any number of occasions taken over projects that were started in other languages, or had prior versions in other languages, and frequently get design documents written assuming other languages. I find the influence of language assumptions on design to be more inhibiting than liberating. That's true of Forth, too. A problem solution needs to be centered on the problem, and then implemented. Focusing too soon on the implementation is rarely a good idea.

Cheers,
Elizabeth

--
==================================================
Elizabeth D. Rather (US & Canada) 800-55-FORTH
FORTH Inc. +1 310-491-3356
5155 W. Rosecrans Ave. #1018 Fax: +1 310-978-9454
Hawthorne, CA 90250
http://www.forth.com

"Forth-based products and Services for real-time
applications since 1973."
==================================================
.



Relevant Pages

  • Re: Open source alternative for MsAccess?
    ... >also be used as an end-user tool. ... We were discussing programming languages within the IDE rather than the ... >The design reflects the purpose of the product. ...
    (comp.os.linux.development.apps)
  • Re: new here, my lang project...
    ... > an 'introductory programming' class I had taken before had used flowcharts, ... of traditional Structured Analysis and Design, ... languages become secondary adjustments. ... putting defects into the software in the first place. ...
    (comp.object)
  • Re: compiler for Chinese development language
    ... This relates to the development of vernacular ... Indian vernacular display, OS and programming languages. ... Bangla and other vernaculars. ...
    (comp.compilers)
  • RE: [Full-Disclosure] automated vulnerability testing
    ... If you are truly interested in security, you won't use C as the programming ... It is security unfriendly by design (so it can get closer to the ... Most other languages prevent these as part of their semantics or syntax. ...
    (Full-Disclosure)
  • How to find entry level work?
    ... My name is Shaun Bedingfield and I have been programming nonprofessionally ... Knowledge of many programming languages including Java, C/C++, C#, VB.NET, ... Assembler under Windows ... Knowledge of state of the art Object Oriented Design principles and patterns ...
    (microsoft.public.dotnet.general)