From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!news2.kpn.net!news.kpn.net!nslave.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader1.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: Checking for Errors Before Run Time References: <6cb6c81f.0111201212.6c599fe8@posting.google.com> <3215285396139730@naggum.net> <3215303341821008@naggum.net> Mail-Copies-To: never From: Erik Naggum Message-ID: <3215356701011266@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 45 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 21 Nov 2001 18:38:23 GMT X-Complaints-To: newsmaster@KPNQwest.no X-Trace: nreader1.kpnqwest.net 1006367903 193.71.66.49 (Wed, 21 Nov 2001 19:38:23 MET) NNTP-Posting-Date: Wed, 21 Nov 2001 19:38:23 MET Xref: archiver1.google.com comp.lang.lisp:20613 * Erik Naggum > I disagree, probably to your surprise. The earlier an error is detected, > the _firmer_ the determination that it is an error is, and the simpler > the world must be in which statements are made. * Chris Perkins | True, but our code does make simple statements from time to time. I was referring to the statement "this is an error". | And it would be nice if the simpler bugs could be vetted out. As you grow more accustomed to programming in a better language, you will notice that you make far fewer "simple bugs". I am serious about this. | Anyway, I know Java and C++ are terribly brittle, and maybe as I work | more in Lisp I'll just perceive DBC, assert clauses, and the like as | artificial kludges for addressing the shortcomings of static languages. The overspecificity of these languages produces the need for tools to combat their cognitive load. Having to specify so much detail so early it just plain wrong, so you need tools that can help you keep things together when you have to make changes as you learn what you should have known by the time you specified these things. The nature of the problem you are solving becomes known to you only as you try to solve it. I believe C++ instills fear in programmers, fear that the interaction of some details causes unpredictable results. Its unmanageable complexity has spawned more fear-preventing tools than any other language, but the solution _should_ have been to create and use a language that does not overload the whole goddamn human brain with irrelevant details. Striking that balance between language complexity and the convenience of using it is amazingly hard, but I think Common Lisp is closer to this lofty ideal than any other I have used. That the syntax is so predictable and so easy to navigate using the proper editor, causes many more benefits than people realize early on. I think the best advice right now is that you should relax all those "needs" you have because you come from a C++/Java environment. /// -- Norway is now run by a priest from the fundamentalist Christian People's Party, the fifth largest party representing one eighth of the electorate. -- Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.