Initial add of defaria.com
[clearscm.git] / defaria.com / blogs / Status / 2014 / 09 / syntactical-sugar.html
1 <!DOCTYPE html>
2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
3   <head>
4     <meta charset="utf-8">
5     <meta name="description" content="Many people write code and specify all kinds of what I call "syntactic sugar". These come in the form of largely punctuation characters especially in Perl. Such things are usually included for the benefit of the compiler or more correctly...">
6     <meta name="generator" content="Movable Type 5.2.3">
7     <title>Syntactical sugar - Status</title>
8     <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9     <link rel="canonical" href="http://defaria.com/blogs/Status/2014/09/syntactical-sugar.html">
10     <meta name="viewport" content="width=device-width,initial-scale=1">
11     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
12     <!--[if lt IE 9]>
13     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14     <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
15     <![endif]-->
16     
17     <link rel="start" href="http://defaria.com/blogs/Status/">
18
19     <link rel="prev" href="http://defaria.com/blogs/Status/2014/04/-setting-up-putty-to.html" title="Setting up PuTTY to do passwordless logins using pre-shared key">
20     <link rel="next" href="http://defaria.com/blogs/Status/2016/02/configuring-linux-to-authenticate-to-active-directory-using-winbind.html" title="Configuring Linux to Authenticate to Active Directory using Winbind">
21     <!-- Open Graph Protocol -->
22     <meta property="og:type" content="article">
23     <meta property="og:locale" content="en-us">
24     <meta property="og:title" content="Syntactical sugar">
25     <meta property="og:url" content="http://defaria.com/blogs/Status/2014/09/syntactical-sugar.html">
26     <meta property="og:description" content="Many people write code and specify all kinds of what I call &quot;syntactic sugar&quot;. These come in the form of largely punctuation characters especially in Perl. Such things are usually included for the benefit of the compiler or more correctly...">
27     <meta property="og:site_name" content="Status">
28     <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
29     <!-- Metadata -->
30     <meta itemprop="description" content="Many people write code and specify all kinds of what I call "syntactic sugar". These come in the form of largely punctuation characters especially in Perl. Such things are usually included for the benefit of the compiler or more correctly...">
31     <link itemprop="url" href="http://defaria.com/blogs/Status/2014/09/syntactical-sugar.html">
32     <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
33     
34   </head>
35   <body>
36     <div id="container">
37       <div id="container-inner">
38         <header id="header" role="banner">
39           <div id="header-inner">
40             <div id="header-content">
41               <h1>
42                 <a href="http://defaria.com/blogs/Status/">
43
44                   Status
45
46                 </a>
47               </h1>
48               
49             </div>
50
51             <nav role="navigation">
52           <ul>
53             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
54
55
56           </ul>
57         </nav>
58
59           </div>
60         </header>
61         <div id="content">
62           <div id="content-inner">
63             <ul class="breadcrumb breadcrumb-list">
64               <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65               <li class="breadcrumb-list-item">Syntactical sugar</li>
66             </ul>
67             <div id="individual-main" class="main" role="main">
68               <article id="entry-1987" class="entry entry-asset asset hentry">
69                 <div class="asset-header">
70                   <h2 itemprop="name" class="asset-name entry-title">Syntactical sugar</h2>
71                   <footer class="asset-meta">
72                     <ul class="asset-meta-list">
73                       <li class="asset-meta-list-item">Posted on <time datetime="2014-09-23T11:00:40-08:00" itemprop="datePublished">September 23, 2014</time></li>
74                       <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
75
76   
77                       <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/audience/">Audience</a></li>
78   
79
80                    </ul>
81                 </footer>
82                 </div>
83                 <div class="entry-content asset-content" itemprop="articleBody">
84                   <p>Many people write code and specify all kinds of what I call "syntactic sugar". These come in the form of largely punctuation characters especially in Perl. Such things are usually included for the benefit of the compiler or more correctly the parser. They are there to avoid ambigutity but a coding style of specifing all of the defaults so that it's clear is IMHO ridiculous. Humans and human understanding of languages uses short cuts, context and implied meaning. Write your code for the next human - not the parser.</p>
85 <p>So, for example, I encountered the following line of Perl code the other day:</p>
86 <pre>if (scalar(@ARGV != 1)) { die "\nUsage:\nAD_auth.pl \%username\%\n" }</pre>
87 <p>Here are some of the unnecessary syntactic sugar:</p>
88 <ul>
89 <li>scalar is unnessesary. An array evaluated in a scalar context, returns the number of entries in the area. Comparing an array to a number like 1 is evaluating an array in a scalar context.</li>
90 <li>The () around @ARGV != 1. Parantheses used to specify correct presidence in mathimatical expressions - sure, but only as many as you need. Here however the parantheses are unnessesary. Sure some say "it's a function call therefore its parms should be enclosed in ()" I ask "why?". Do you always likewise do print ("a string") or do you do print "a string"?</li>
91 <li>The () around the boolean expression for if. It's require, unless if appears at the end...</li>
92 <li>The {} around the then portion of the if statement. Technically not needed as without them the die statement would be the only statement in the then block. However in practice I pretty much always use {} even if only one statement. I find that way too often I need to stick more statements in there and if so then {} are already there.</li>
93 <li>Needless escape of %: There is no need to specify \%. Oh, and this is a bad, non-portable practice as if they meant %username% as in expand the environment variable username well that'd only work in Windows.</li>
94 </ul>
95 <p>How do I think this would be better written:</p>
96 <pre>die "Usage: $FindBin::Script &lt;username&gt;\n" unless @ARGV == 1;</pre>
97 <p>I believe the advantages are:</p>
98 <ul>
99 <li>Dynamically obtaining the script's name instead of hard coding it</li>
100 <li>Specifying &lt;username&gt; is a more standard way of indicating that the user should fill in this parameter</li>
101 <li>Positive logic, with the help of unless. Unless is like if not. But I find too many nots become confusing. It took a little bit of time for me to feel comfortable with unless, to trust it was the right thing. But it's pretty much English - unless the array ARGV has only 1 element. Unless also reads better at the end of a line.</li>
102 </ul>
103                   
104                 </div>
105                 <nav class="page-navigation entry-navigation pagination content-nav">
106                   <ul class="page-navigation-list">
107
108                     <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2014/04/-setting-up-putty-to.html" title="Setting up PuTTY to do passwordless logins using pre-shared key">Previous entry</a></li>
109
110
111                     <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2016/02/configuring-linux-to-authenticate-to-active-directory-using-winbind.html" title="Configuring Linux to Authenticate to Active Directory using Winbind">Next entry</a></li>
112
113                   </ul>
114                 </nav>
115                 <!--
116 <aside id="zenback" class="zenback feedback">
117   Please paste Zenback script code here.
118 </aside>
119 -->
120                 
121                 
122               </article>
123             </div>
124             <aside class="widgets related" role="complementary">
125               <nav class="widget-search widget">
126   <div class="widget-content">
127     <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
128       <div>
129         <input type="text" name="search" value="" placeholder="Search...">
130
131         <input type="hidden" name="IncludeBlogs" value="8">
132
133         <input type="hidden" name="limit" value="20">
134         <button type="submit" name="button">
135           <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
136         </button>
137       </div>
138     </form>
139   </div>
140 </nav>
141 <nav class="widget-archive-category widget">
142   <h3 class="widget-header">Categories</h3>
143   <div class="widget-content">
144     
145       
146     <ul class="widget-list">
147       
148       
149       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
150       
151       
152       </li>
153       
154     
155       
156       
157       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (4)</a>
158       
159       
160       </li>
161       
162     
163       
164       
165       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
166       
167       
168       </li>
169       
170     
171       
172       
173       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
174       
175       
176       </li>
177       
178     
179       
180       
181       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
182       
183       
184       </li>
185       
186     
187       
188       
189       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
190       
191       
192       </li>
193       
194     
195       
196       
197       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
198       
199       
200       </li>
201       
202     
203       
204       
205       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
206       
207       
208       </li>
209       
210     
211       
212       
213       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
214       
215       
216       </li>
217       
218     
219       
220       
221       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
222       
223       
224       </li>
225       
226     
227       
228       
229       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
230       
231       
232       </li>
233       
234     
235       
236       
237       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
238       
239       
240       </li>
241       
242     </ul>
243       
244     
245   </div>
246 </nav>
247   
248
249 <nav class="widget-archive-dropdown widget">
250   <h3 class="widget-header">Archives</h3>
251   <div class="widget-content">
252     <select>
253       <option>Select a Month...</option>
254     
255       <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
256     
257   
258     
259       <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
260     
261   
262     
263       <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
264     
265   
266     
267       <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
268     
269   
270     
271       <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
272     
273   
274     
275       <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
276     
277   
278     
279       <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
280     
281   
282     
283       <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
284     
285   
286     
287       <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
288     
289   
290     
291       <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
292     
293   
294     
295       <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
296     
297   
298     
299       <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
300     
301   
302     
303       <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
304     
305   
306     
307       <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
308     
309   
310     
311       <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
312     
313   
314     
315       <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
316     
317   
318     
319       <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
320     
321   
322     
323       <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
324     
325   
326     
327       <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
328     
329   
330     
331       <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
332     
333   
334     
335       <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
336     
337   
338     
339       <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
340     
341   
342     
343       <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
344     
345   
346     
347       <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
348     
349   
350     
351       <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
352     
353   
354     
355       <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
356     
357   
358     
359       <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
360     
361   
362     
363       <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
364     
365   
366     
367       <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
368     
369   
370     
371       <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
372     
373   
374     
375       <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
376     
377   
378     
379       <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
380     
381   
382     
383       <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
384     
385   
386     
387       <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
388     
389   
390     
391       <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
392     
393   
394     
395       <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
396     
397   
398     
399       <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
400     
401   
402     
403       <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
404     
405   
406     
407       <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
408     
409   
410     
411       <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
412     
413   
414     
415       <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
416     
417   
418     
419       <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
420     
421   
422     
423       <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
424     
425   
426     
427       <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
428     
429   
430     
431       <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
432     
433   
434     
435       <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
436     
437   
438     
439       <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
440     
441   
442     
443       <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
444     
445   
446     
447       <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
448     
449   
450     
451       <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
452     
453   
454     
455       <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
456     
457   
458     
459       <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
460     
461   
462     
463       <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
464     
465   
466     
467       <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
468     
469   
470     
471       <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
472     
473   
474     
475       <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
476     
477   
478     
479       <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
480     
481   
482     
483       <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
484     
485   
486     
487       <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
488     
489   
490     
491       <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
492     
493   
494     
495       <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
496     
497   
498     
499       <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
500     
501   
502     
503       <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
504     
505   
506     
507       <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
508     
509   
510     
511       <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
512     
513   
514     
515       <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
516     
517   
518     
519       <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
520     
521   
522     
523       <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
524     
525   
526     
527       <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
528     
529   
530     
531       <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
532     
533   
534     
535       <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
536     
537   
538     
539       <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
540     
541     </select>
542   </div>
543 </nav>
544     
545   
546
547 <div class="widget-syndication widget section">
548   <div class="widget-content">
549     <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
550
551   </div>
552 </div>
553
554             </aside>
555           </div>
556         </div>
557         <footer id="footer" role="contentinfo">
558           <div id="footer-inner">
559             <div id="footer-content">
560   <nav role="navigation">
561           <ul>
562             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
563
564
565           </ul>
566         </nav>
567
568   <p class="license">&copy; Copyright 2016.</p>
569   <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
570 </div>
571           </div>
572         </footer>
573       </div>
574     </div>
575     <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
576     <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>
577   </body>
578 </html>