Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'programmer': 0.03; 'anyway.': 0.05; 'explicitly': 0.05; 'dynamically': 0.07; 'mentioned,': 0.07; 'statically': 0.07; 'test,': 0.07; 'variables': 0.07; 'ide': 0.09; 'lawrence': 0.09; 'runtime': 0.09; 'type,': 0.09; 'type;': 0.09; 'typed': 0.09; 'cc:addr:python- list': 0.11; 'boring,': 0.16; 'declarations': 0.16; 'declared': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'non-trivial': 0.16; 'object),': 0.16; 'picks': 0.16; 'specifying': 0.16; 'subject:programming': 0.16; 'all.': 0.16; 'language': 0.16; 'wrote:': 0.18; 'wed,': 0.18; 'cc:addr:python.org': 0.22; 'cc:2**0': 0.24; "i've": 0.25; 'compiled': 0.26; 'long,': 0.26; 'primary': 0.26; 'header:In- Reply-To:1': 0.27; 'am,': 0.29; 'errors': 0.30; 'message- id:@mail.gmail.com': 0.30; 'that.': 0.31; 'implicit': 0.31; 'testing.': 0.31; 'languages': 0.32; 'bugs': 0.33; 'checking': 0.33; "can't": 0.35; 'but': 0.35; 'received:google.com': 0.35; 'doing': 0.36; "didn't": 0.36; 'too': 0.37; 'rather': 0.38; 'anything': 0.39; 'major': 0.40; 'truly': 0.60; "you're": 0.61; 'save': 0.62; 'name': 0.63; 'hang': 0.67; 'mar': 0.68; 'registers': 0.68; 'gain': 0.79; "it'd": 0.84; 'to:none': 0.92 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=9NVdfucJuxbz4NwRU/TuVuVysOdi56wM8uLD4KULyU4=; b=aItPZIoaRxXi5r9gucqnGT1j3Z4WbQDfBlzot1IbPmZ75GFkF16frXxTHOBiOCPubk J6XXozXo6hqH5tzKrbO10vV0/BGD41dDt/+4AXBVRyj7F1xREVcRCa9JjdEiy+eMVq2K rduTHZHTuAyYhjvJ3lNmrBVuzNf+kB73KEP2amhIdyk3EX2J+3l9q+jfHStWpfv3k2vm gAX5QIxBNvqRg56FuROJukO0ZFeMz85Vv8FFngBhv9bu/hHhvuBWHap/Mc4HzChXT9bb h2bd719EcYXCCYZxDpLff2Ne0QrwAPTHLse0ztpX2zvGtbMCFaiKLmEAnS+iHlCIgmRQ Z8lg== MIME-Version: 1.0 X-Received: by 10.68.200.74 with SMTP id jq10mr2384545pbc.169.1393942663538; Tue, 04 Mar 2014 06:17:43 -0800 (PST) In-Reply-To: References: <4c7dbc57-eef9-4582-aecd-aac13a39b45f@googlegroups.com> <3b54a279-03a1-4a81-a428-ecad6eb16036@googlegroups.com> <216bb5f4-32c4-4f86-a9f4-1b0dd37a2a81@googlegroups.com> <0129a5b9-b85f-4ad5-b5e2-bfb2a48041d5@googlegroups.com> <5314bb96$0$29985$c3e8da3$5496439d@news.astraweb.com> <5315661c$0$2923$c3e8da3$76491128@news.astraweb.com> <53159540$0$2923$c3e8da3$76491128@news.astraweb.com> Date: Wed, 5 Mar 2014 01:17:43 +1100 Subject: Re: Functional programming From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 29 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1393942672 news.xs4all.nl 2885 [2001:888:2000:d::a6]:43639 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:67678 On Wed, Mar 5, 2014 at 1:05 AM, Mark Lawrence wrote: > On 04/03/2014 13:30, BartC wrote: >> >> >> But declaring variables is not just about specifying a type; it registers >> the name too so that misspelled names can be picked up very early rather >> than at runtime (and that's if you're lucky). >> > > I've said before that this, to me, is one of the major downsides of dynamic > typing. Once a statically typed language has been compiled the programmer > can head down to the pub. The programmer using dynamically typed languages > has to hang around doing long, boring, tedious testing. Unless they're > using an IDE like Pydev and have Pylint turned on so it picks up errors as > they type, in which case they can also head down to the pub. Type declarations are orthogonal to that. ECMAScript, as mentioned, just has 'var'. If it didn't have the implicit variables rule (anything not explicitly declared goes onto the primary object), it'd give you exactly that functionality, without any type checking at all. And there's not "static" and "dynamic". It's a spectrum. Each time you move one direction, you gain a set of potential bugs that the language can detect; each time you move the other direction, you save on keyboarding. But at no time do you truly get away from the need to test, because anything non-trivial can't be proven by the language anyway. ChrisA