<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>programming Archives | Programming Zen</title>
	<atom:link href="https://programmingzen.com/tag/programming-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingzen.com/tag/programming-2/</link>
	<description>Meditations on programming, startups, and technology</description>
	<lastBuildDate>Thu, 29 Aug 2019 04:59:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">1397766</site>	<item>
		<title>Programming on an iPad</title>
		<link>https://programmingzen.com/programming-on-an-ipad/</link>
					<comments>https://programmingzen.com/programming-on-an-ipad/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Thu, 29 Aug 2019 04:57:47 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[blink shell]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPad OS]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://programmingzen.com/?p=2186</guid>

					<description><![CDATA[<p>A month ago, I wrote a list of gadgets I love. In it, I mentioned that I gave my old iPad to my wife. I didn&#x2019;t use it enough to justify keeping it for myself. Yet, I conceded the appeal of the newer iPads: I&#x2019;m not saying never again to owning an iPad. The newer, fancy models with the pencil cast a certain spell on me. Still, I reached a point where gadgets are only added to my collection if they get used. So I&#x2019;ll only get an iPad if I can find a workflow that makes it a necessity. </p>
<p>The post <a href="https://programmingzen.com/programming-on-an-ipad/">Programming on an iPad</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A month ago, I wrote <a href="https://programmingzen.com/19-gadgets-i-use-and-love/">a list of gadgets</a> I love. In it, I mentioned that I gave my old iPad to my wife. I didn&#8217;t use it enough to justify keeping it for myself. Yet, I conceded the appeal of the newer iPads:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>I’m not saying never again to owning an iPad. The newer, fancy models with the pencil cast a certain spell on me.<br><br> Still, I reached a point where gadgets are only added to my collection if they get used. So I’ll only get an iPad if I can find a workflow that makes it a necessity.</p></blockquote>



<p>In doing so, I fear a seed was planted. I started asking myself what said workflow might look like.</p>



<h2 class="wp-block-heading">What is an iPad useful for?</h2>



<p>iPads tend to be great consumption devices. They are lightweight and easy to transport. Fast, thanks to great specs and tight integration with the operating system. Their battery life lasts for most of the day. If you are watching videos, casual browsing, or playing games they are quite convenient.</p>



<p>I don&#8217;t hate consumption, but I&#8217;m trying to focus more on production than consumption in my life. So the iPad doesn&#8217;t hold great appeal when solely considered as a consumption device.</p>



<p>In recent times, I have seen people use them to be more productive, however. Doctors and medical students appear to be quite fond of domain-specific apps as well as its note-taking capabilities. Digital artists create great paintings and drawings on them. Musicians and even photographers/videographers are increasingly using the iPad, particularly the Pro line, on the go.</p>



<p>Could the iPad be a great option for programming as well?</p>



<h2 class="wp-block-heading">My ideal use case</h2>



<p>Before we discuss how one might configure an iPad for programming, I&#8217;d like to point out that my primary use would be reading technical PDFs, annotating them, and taking notes. If you are only interested in programming, laptops are a superior choice.</p>



<p>Still, you are there sitting at the library or a coffee shop. You&#8217;re reading a programming book, jotting down notes. It&#8217;s only natural to want to write code to validate and experiment with what you&#8217;re learning.</p>



<p>We know from neuroscience studies that the act of taking notes by hand is superior to typing them when it comes to retaining the information. For programming related material, however, I&#8217;d say that writing actual code is just as important.</p>



<p>You could bring both a laptop and an iPad but it becomes quite inconvenient at that point.</p>



<p>So for me, the ideal scenario would be an iPad that allows me to read technical books, annotate them/take notes, and program on it.</p>



<p>It already excels at the first two tasks, but can the iPad work for programming? The screen, in landscape mode, is certainly big enough. If you opt for the 12.9&#8243; model, it&#8217;s essentially no different than my current MacBook Pro. Spec-wise, it might even be as fast, if not faster.</p>



<p>So it&#8217;s really a matter of software. These babies should be called iFortKnox. They are quite locked down.</p>



<h2 class="wp-block-heading">A possible iPad setup for programming</h2>



<p>If you search for them, you&#8217;ll find the occasional IDE for iOS. <a href="http://omz-software.com/pythonista/" target="_blank" rel="noreferrer noopener" aria-label="Pythonista (opens in a new tab)">Pythonista</a> for iOS, for example, will mostly work if you&#8217;re writing Python scripts.</p>



<p>Unfortunately, there isn&#8217;t an equivalent for Elixir and Phoenix, which I tend to favor these days. Plus, I like to use Git as a mechanism to share code between different laptops.</p>



<p>VNC is not a great option either, in my experience. You&#8217;ll face quite a bit of lag and the smaller screen of the iPad doesn&#8217;t lend itself too well to showing a whole computer desktop.</p>



<p>It seems to me that the best approach is to have the development environment on a remote machine and use the iPad as a client.</p>



<p>Amusingly, dedicated services like C9 by Amazon do not support mobile browsers that well. Though, with the upcoming iPad OS defaulting Safari to a full browser, it&#8217;s possible that these will become a viable option.</p>



<p>Based on my research, the most promising alternative is running a cheap remote box on <a href="https://m.do.co/c/61afb9d1476f" target="_blank" rel="noreferrer noopener" aria-label="DigitalOcean (opens in a new tab)">DigitalOcean</a> or similar provider, and connecting via a mosh-shell like <a rel="noreferrer noopener" aria-label="Blink Shell (opens in a new tab)" href="https://www.blink.sh/" target="_blank">Blink Shell</a>. That appears to work really well even with spotty connections.</p>



<p>It would mean using a terminal-based editor. It&#8217;s not for everybody, but even though I tend to use Visual Studio Code these days, I would have zero problems with using Vim for this purpose. (<em>Hello Vim, my old friend, I&#8217;ve come to type with you again.</em>)</p>



<p>This caveat aside, I really don&#8217;t see a downside to this workflow. I get all the benefits the iPad brings plus the ability to actually do real programming (with a cover keyboard, of course).</p>



<p>The new iPad Pros are rumored to come out soon. They might be announced in less than two weeks. So I&#8217;m going to sit tight on this one but I&#8217;m eagerly waiting.</p>



<p>What about you? Do you have an iPad? Do you use it for programming? Is your workflow different than the one I propose here? Let me know in the comments below.</p>
<p>The post <a href="https://programmingzen.com/programming-on-an-ipad/">Programming on an iPad</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/programming-on-an-ipad/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2186</post-id>	</item>
		<item>
		<title>25 Pitfalls When Learning to Program</title>
		<link>https://programmingzen.com/pitfalls-when-learning-to-program/</link>
					<comments>https://programmingzen.com/pitfalls-when-learning-to-program/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Thu, 09 Nov 2017 21:47:41 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[how to become a programmer]]></category>
		<category><![CDATA[learning to program]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming piftalls]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1786</guid>

					<description><![CDATA[<p>I&#x2019;m going to share with you what I see as &#x201C;25&#x201D; common pitfalls when learning to program (or working towards mastering programming). Many of these points affect both beginners and professionals alike &#x2014; myself very much included. 0. Forgetting that programming is all about people. Yes, the machine will execute your code, but programming is solving problems for people, translating their requirements into code that will be read, maintained, and modified by other people (or yourself down the line). 1. Not spending enough time programming. Depending on your job or schedule, you might spend a lot of time on tasks </p>
<p>The post <a href="https://programmingzen.com/pitfalls-when-learning-to-program/">25 Pitfalls When Learning to Program</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m going to share with you what I see as &#8220;25&#8221; common pitfalls when learning to program (or working towards mastering programming). Many of these points affect both beginners and professionals alike — myself very much included.</p>
<p><strong>0.</strong> Forgetting that <strong>programming is all about people</strong>. Yes, the machine will execute your code, but programming is solving problems for people, translating their requirements into code that will be read, maintained, and modified by other people (or yourself down the line).</p>
<p><strong>1.</strong> <strong>Not spending enough time programming</strong>. Depending on your job or schedule, you might spend a lot of time on tasks that are related to programming but aren&#8217;t actually programming itself.</p>
<p><strong>2.</strong> <strong>Stopping at the surface</strong> of a given technology you&#8217;re learning. Feeling satisfied with having mastered the basics just enough to get stuff done, without ever exploring further or going behind the scenes all that much.</p>
<p><strong>3.</strong> <strong>The Magpie approach</strong> to learning programming. You start learning Rails, half-way through you realize that Phoenix is out there, oh and you need to learn JavaScript so you might as well go with Node.js&#8230; but wait <a href="https://medium.com/@tjholowaychuk/farewell-node-js-4ba9e7f3e52b" target="_blank" rel="noopener">TJ switched to Go</a>, and hold on&#8230; what about Rust? Soon enough your browser history will have, &#8220;web development or data science career&#8221;, &#8220;is Clojure dead?&#8221;, &#8220;Clojure vs Elixir&#8221;, &#8220;is Crystal mature enough&#8221;, &#8220;any good frameworks for Golang&#8221;, &#8220;Phoenix vs Buffalo&#8221; and &#8220;Kotlin for web development&#8221; all in the same week. 😀</p>
<p><strong>4.</strong> Reading books and watching courses online but <strong>not practicing the skills</strong> presented, therefore quickly forgetting about them.</p>
<p><strong>5</strong>. <strong>Skipping fundamentals</strong>. So you end up learning about continuation-passing style (CPS) but still can&#8217;t do SQL joins without an object-relational mapper.</p>
<p><strong>6.</strong> <strong>Not enough patience</strong> or discipline to progress through the learning process and steps required to master any technology.</p>
<p><strong>7.</strong> <strong>No clear map or schedule for continuing to learn</strong> through available resources, while you tackle more immediate challenges in your day-to-day programming.</p>
<p><strong>8.</strong> <strong>Analysis paralysis</strong>, wasting way too much time choosing amongst various frameworks and libraries (like Angular, React, and Vue), rather than just picking one, using it, and switching to something else only if you actually need to do so. Basically being a <a href="https://www.psychologistworld.com/cognitive/maximizers-satisficers-decision-making" target="_blank" rel="noopener">maximizer instead of a satisficer</a>.</p>
<p><strong>9.</strong> Refusing the polyglot nature of modern-day programming. In most domains, it isn&#8217;t reasonable to expect one programming language to be the best fit for every problem. Likewise, <strong>identifying too much as an X or Y programmer</strong>, rather than just a programmer who prefers X or Y.</p>
<p><strong>10.</strong> <strong>Fear of experimenting with new technology</strong>. Rather than just reading about certain emerging technologies (e.g., blockchain or <a href="https://cognitiveclass.ai/courses/how-to-build-a-chatbot/" target="_blank" rel="noopener">chatbots</a>), actually firing up a VM to try them out yourself, even if it involves getting your hands dirty with a programming language or API you are not familiar with.</p>
<p><strong>11.</strong> <strong>Expecting to know everything upfront</strong>. Being disappointed after finding pointers to the solution via Google, because you didn&#8217;t come up with an elegant solution entirely on your own and kicking yourself while thinking, &#8220;I should have thought of that myself&#8221;.</p>
<p><strong>12.</strong> <strong>Not creating many small katas</strong>, exercises, and projects while learning.</p>
<p><strong>13.</strong> <strong>Fear of sharing code</strong> with others or getting code reviews, lest you be judged.</p>
<p><strong>14.</strong> <strong>Not seeking one-on-one mentorship</strong> from more experienced developers.</p>
<p><strong>15.</strong> Expecting to learn everything at once with <strong>unrealistic timelines</strong> (e.g., master iOS development in a month).</p>
<p><strong>16.</strong> For the more entrepreneur-minded, <strong>not exploring cool projects because they don&#8217;t have a clear path to revenue generation</strong>.</p>
<p><strong>17.</strong> Not asking questions for <strong>fear of coming across as stupid</strong> or as more of a newbie than you actually are.</p>
<p><strong>18.</strong> Feeling like you are not a real programmer if you&#8217;re creating apps by gluing high-level libraries together, in a high-level language instead of doing &#8220;hardcore&#8221; algorithms in more complex languages. I dub this <strong>low-level programming envy</strong>.</p>
<p><strong>19.</strong> <strong>Allowing the desire to learn best practices to hinder your ability to grasp the fundamentals</strong> of a given language or technology. For example, feeling like you need to learn a whole book on design patterns or master TDD/BDD before you start creating projects.</p>
<p><strong>20.</strong> Perfectionism. <strong>Letting perfect be the enemy of good enough.</strong> Never shipping anything, getting stuck in the &#8220;final touches&#8221; phase. (But balance is important, so don&#8217;t ship horribly broken software for the sake of shipping.)</p>
<p><strong>21.</strong> Related to the previous point, <strong>ignoring the progression: make it work, make it faster, make it clean</strong>. Instead, expecting a polished solution from the get-go. It&#8217;s important to accept that the first iteration will be a rough draft to improve upon.</p>
<p><strong>22.</strong> <strong>Impostor Syndrome</strong>. Feeling that you aren&#8217;t good enough. This is particularly bad if you don&#8217;t fit the current developer stereotype, as a lack of role models that you can relate with might mistakenly confirm your doubts. This is part of why women and minorities representation in tech is so key.</p>
<p><strong>23.</strong> Writing code and learning about programming from books, but <strong>never reading other people&#8217;s code</strong>. Open Source gives us an amazing resource that can drastically speed up our understanding of programming and best practices.</p>
<p><strong>24.</strong> <strong>Not getting exposed to other paradigms or domains</strong>. If you&#8217;re a web developer, not learning about other types of development. If you know Object-Oriented programming, not learning about Functional programming.</p>
<p><strong>25.</strong> <strong>Not teaching others what you learn</strong>. Nothing will solidify what you learn as well as trying to explain it to others. Even just studying with the intention of teaching will increase your ability to learn.</p>
<p>There you have it&#8230; <em>25</em> pitfalls. Oh, don&#8217;t forget off-by-one errors, too. 😀</p>
<h3>Conclusion</h3>
<p>All this to say:</p>
<p style="background-color: #ef97b3; text-align: center; font-style: normal; border: 1px solid pink; padding: 10px;">You&#8217;re good enough. You can definitely do it. Just watch out for these pitfalls, make a plan, commit to it, then take it one step at the time.</p>
<p>When learning to program (or improving your current mastery of it), I recommend the code/read/teach method. Code one real project, and many small exercises/katas as you learn. Read books but also other people&#8217;s code. Finally, teach what you learn online and in person. You don&#8217;t need to be an expert to do so.</p>
<p><img data-recalc-dims="1" fetchpriority="high" decoding="async" class="aligncenter wp-image-1790 size-full" title="Learnign to program" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2017/11/learning-to-program.gif?resize=701%2C271&#038;ssl=1" alt="Learning to program" width="701" height="271" /></p>
<p>I hope this is somewhat useful. If it is, feel free to share the link online. It&#8217;s a list that I, myself, plan to reread once in a while.</p>
<p><em>Initially, I shared these thoughts on learning to program as <a href="https://twitter.com/acangiano/status/928316815876300800" target="_blank" rel="noopener">a series of tweets</a>, but Twitter&#8217;s UI had some issues displaying them as a single thread. So I&#8217;m reposting them here as a post. Incidentally, this ends my <a href="https://programmingzen.com/programming-zen-will-be-on-a-hiatus-due-to-tragic-circumstances/" target="_blank" rel="noopener">one-year hiatus</a> from blogging.</em></p>
<p>The post <a href="https://programmingzen.com/pitfalls-when-learning-to-program/">25 Pitfalls When Learning to Program</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/pitfalls-when-learning-to-program/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1786</post-id>	</item>
		<item>
		<title>On Programming Languages as Languages</title>
		<link>https://programmingzen.com/programming-languages-as-languages/</link>
					<comments>https://programmingzen.com/programming-languages-as-languages/#comments</comments>
		
		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 16:05:32 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Ruby]]></category>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571</guid>

					<description><![CDATA[<p>When you look up the word &#x201C;Language&#x201D; in the dictionary, you&#x2019;ll find a few variations of similar definitions. My trusty Google Dictionary extension in Chrome, offers up a first definition that is rather obvious, but nevertheless: The method of human communication, either spoken or written, consisting of the use of words in a structured and conventional way. The second definition is more interesting because it allows me to make a point about programming languages. It goes like this: The system of communication used by a particular community or country. Look at that. Isn&#x2019;t that beautiful? Let&#x2019;s cut the country stuff, </p>
<p>The post <a href="https://programmingzen.com/programming-languages-as-languages/">On Programming Languages as Languages</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When you look up the word “Language” in the dictionary, you’ll find a few variations of similar definitions. My trusty <a href="https://chrome.google.com/webstore/detail/google-dictionary-by-goog/mgijmajocgfcbeboacabfgobmjgjcoja?hl=en">Google Dictionary extension</a> in Chrome, offers up a first definition that is rather obvious, but nevertheless:</p>
<blockquote><p>The method of human communication, either spoken or written, consisting of the use of words in a structured and conventional way.</p></blockquote>
<p>The second definition is more interesting because it allows me to make a point about programming languages. It goes like this:</p>
<blockquote><p>The system of communication used by a particular community or country.</p></blockquote>
<p>Look at that. Isn’t that beautiful? Let’s cut the country stuff, and shorten it to, “The system of communication used by a particular community”. Tell me that it’s not a spectacular definition of programming languages as well.</p>
<p>We can look at programming languages in two possible ways. They can be a means for us to instruct the computer, and incidentally communicate with fellow programmers, or they can allow us to communicate with other programmers in specific terms that are ultimately executable.</p>
<p>The first interpretation is technically more accurate. Or, more specifically, the worst kind of accurate.</p>
<p>I like to think of programming languages as languages because, outside of trivial programs, above all else they enable programmers to communicate with one another when it comes to resolving a problem or completing a particular task, while incidentally producing code that is also understood by computers via “translators” (e.g., compilers and interpreters).</p>
<p>There are plenty of benefits that can be derived from thinking about programming in terms of the second interpretation.</p>
<p>When you view programming in this light, you start considering the value of comments expressing the “why” and code expressing the “how”. Tests become a way to communicate to a fellow programmer <a id="fnref:1" class="footnote" title="see footnote" href="#fn:1">[1]</a> that a change to the codebase has violated a given requirement. Above all, writing idiomatic code becomes important.</p>
<p>Remember the Google Dictionary definition. “The system of communication of a particular community”. It is in fact the community, for better or for worse, that sets the guidelines and de facto style of a particular programming language.</p>
<p>Since we are operating in a system of communication, programming is a bit like driving: predictability is important. That’s why in the Ruby community we have the <a href="https://en.wikipedia.org/wiki/Principle_of_least_astonishment">principle of least surprise</a> <a id="fnref:2" class="footnote" title="see footnote" href="#fn:2">[2]</a> and in the Python community one finds the “There should be one – and preferably only one – obvious way to do it” mantra. <a id="fnref:3" class="footnote" title="see footnote" href="#fn:3">[3]</a></p>
<p>When you think of programming languages as a series of conventions adopted by a community, and incidentally understood by the computer, you avoid recklessly monkey patching classes just because you can. You know that doing so leads to unexpected results and miscommunications with other programmers.</p>
<p>You also avoid features which are technically legal in the language, but rare and confusing to fellow experienced developers in that particular language. For an example of this, take a look a the <a href="https://nithinbekal.com/posts/ruby-flip-flop/">Flip-Flop</a> operator in Ruby (a reminiscence of its Perl heritage). Technically legal Ruby, even useful at times, however you shouldn’t use it because only a handful of fellow Rubyists will understand what you’re doing. <a id="fnref:4" class="footnote" title="see footnote" href="#fn:4">[4]</a> Worse yet, it will be hard to Google for an answer unless you are familiar with its name already.</p>
<p>When you’re first picking up a human language, you learn the meaning of common words. Then you use simple sentences that you memorize from books, people around you, songs, movies, and TV shows. Then you try to mimic the idioms you see used by mother tongue speakers. Often you won’t get them right at first, resulting in comical variations that are close, but not quite right, to those of native speakers.</p>
<p>When it comes to programming languages things really aren’t all that different. That’s why it’s critically important to read other people’s code, write code and receive feedback in code reviews, do peer programming, take part in open source contribution, and engage in other forms of social interaction pertaining to code. Doing so is immensely important when it comes to truly mastering a programming language.</p>
<p>Another consequence of this emphasis on communication among programmers through a common, precise, language whose style, conventions, and idioms are defined by the community is that you should choose your communities carefully. What are the community’s priorities? If there is no love for beautiful, clear, elegant, easy to understand code, tread very carefully. <a id="fnref:5" class="footnote" title="see footnote" href="#fn:5">[5]</a></p>
<p>As someone who had to learn English as an adult, pretty much from scratch, I can tell you that I find many parallels between the experience of learning a new language and that of a new programming language.</p>
<p>Even if the two are not a perfect match &#8211; and seeing a programming language as a human language is an imperfect metaphor &#8211; I feel that thinking of it in these terms has allowed me to quickly acquire key skills in the programming languages that I needed or wanted to learn.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">At times, that other programmer is just your future self. <a class="reversefootnote" title="return to article" href="#fnref:1">&#8593;</a></li>
<li id="fn:2">Well, at least that doesn’t surprise Ruby’s creator, <a href="https://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Matz</a>. <a class="reversefootnote" title="return to article" href="#fnref:2">&#8593;</a></li>
<li id="fn:3">Run <code>import this</code> in your iPython shell. What, you’re not using iPython? Stop reading. Go <a href="https://ipython.org/">install it</a>. <a class="reversefootnote" title="return to article" href="#fnref:3">&#8593;</a></li>
<li id="fn:4">Idiomatic code can be hard to understand by inexperienced programmers. And that’s fine, as long as reasonably experienced developers can parse its meaning. If nine out of ten programmers in your own community are unable to understand what you are doing, you are equivalent to someone who intentionally uses archaic words in conversation. You end up sounding <em>grandiloquent</em> for no good reason. <a class="reversefootnote" title="return to article" href="#fnref:4">&#8593;</a></li>
<li id="fn:5">At the risk of getting backlash for these remarks, the PHP community comes to mind. Or even the JavaScript community prior to jQuery and Node.js. There were excellent PHP and JavaScript developers back in the day of course, but the community as a whole had a tendency to hack things together, as long as it worked. Somehow. <a class="reversefootnote" title="return to article" href="#fnref:5">&#8593;</a></li>
</ol>
</div>
<p>The post <a href="https://programmingzen.com/programming-languages-as-languages/">On Programming Languages as Languages</a> appeared first on <a href="https://programmingzen.com">Programming Zen</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingzen.com/programming-languages-as-languages/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1571</post-id>	</item>
	</channel>
</rss>
