- Jan 2023
-
news.ycombinator.com news.ycombinator.com
-
They are foldable in IDEs
Everything is foldable in IDEs so long as the IDEs make them foldable.
-
-
www.colbyrussell.com www.colbyrussell.com
-
Considerations
What about chained dotted access?
foo.bar.baz
is probably okay asbar.baz @ (the Foo)
(or even@the Foo
), but probably not if it takes the formbar.baz from the Foo
. (It just doesn't look reasonable to me.)Alternatively, what about
@bar.baz for the Foo
?
-
-
buttondown.email buttondown.email
-
In Lua you can write raw, multiline strings with [[]]: [[ Alice said "Bob said 'hi'". ]]
This is indeed very good (for the reasons stated here).
-
-
docdrop.org docdrop.org
-
how important is the concrete syntax of their language in contrast to
how important is the concrete syntax of their language in contrast to the abstract concepts behind them what I mean they say can someone somewhat awkward concrete syntax be an obstacle when it comes to the acceptance
-
- Nov 2022
-
www.moserware.com www.moserware.com
-
there is no single perfect universal programming language. Until I came to that point, I wasted a lot of time thinking that GW-BASIC QBASIC QB 4.5 VB4 Delphi Java C++ C# 1.0 was the only language I would ever need
-
- Sep 2022
-
news.ycombinator.com news.ycombinator.com
-
The LISP part, though, is not going well. Porting clever 1970s Stanford AI Lab macros written on the original SAIL machine to modern Common LISP is hard. Anybody with a knowledge of MACLISP want to help?
-
-
stallman.org stallman.org
-
I find C++ quite ugly
-
- Aug 2022
-
search.lib.utexas.edu search.lib.utexas.edu新しいタブ1
-
Obnoxious.
As someone recently pointed out on HN, it's very common nowadays to encounter the no-one-knows-else-what-they're-doing-here refrain as cover—I don't have to feel insecure about not understanding this because not only am I not alone, nobody else understands it either.
Secondly, if your code is hard to understand regarding its use of
this
, then your code his hard to understand.this
isn't super easy, but it's also not hard. Your code (or the code you're being made to wade into) probably just sucks. Thethis
confusion is making you confront it, though, instead of letting it otherwise fly under the radar.* So fix it and stop going in for the low-effort,this
-centric clapter.* Not claiming here that
this
is unique; there are allowed to be other things that work as the same sort of indicator.
-
-
-
and free of globals
Ah! This remark highlights a fundamental difference in understanding between two camps, which I have been (painfully) aware of, but the source of this confusion has eluded me until only just right now. (Really, this is a source of frustration going back years.)
In one camp, the advice "don't use global variables" is a way of attacking a bunch of things endemic to their use, most notably unnecessary coupling to spooky state. In another camp "no global variables" is understood to mean literally that and taken no further—so you can have as much spookiness as you like, and so long as the value is not directly accessible (visible) from, say, another given piece of code appearing at the top-level ("global") context, as with the way
i
is bound to the activation record in this example but is not accessible outside the scope ofgetGetNext
, then you're good.That is, there are two aspects to variables: visibility and extent, and the first interpretation seeks to avoid the negative effects on both dimensions, while the second is satisfied by narrowly prohibiting direct visibility across boundaries.
I find the latter interpretation bizarre and completely at odds with the spirit of the exhortation for avoiding globals in the first place.
(What's worse is the the second interpretation usually goes hand in hand with the practice of making extensive use of closures, which because they are propped up as being closely associated with functions, then leads people to regretfully refer to this style as functional programming. This is a grave error—and, to repeat, totally at odds with the spirit of the thing.)
-
-
www.cs.virginia.edu www.cs.virginia.edu
-
There are no static variables and no initialization
This is an excellent property. It's not a weakness.
-
- Jul 2022
-
bafybeiac2nvojjb56tfpqsi44jhpartgxychh5djt4g4l4m4yo263plqau.ipfs.dweb.link bafybeiac2nvojjb56tfpqsi44jhpartgxychh5djt4g4l4m4yo263plqau.ipfs.dweb.link
-
Later in life and irrespective to the character of the relationship held, the good enough approachinforms how communication between people can be practiced. One of the widest known formulasfor that is called Nonviolent Communication, subtitled as the ‘language of life’ [ 39]. The subtitle seemsparticularly appropriate to our case, as it describes a method of communication that does not servesocial programming and allow humans to author and own their speech. A nonviolent communicatordoes not reinforce the boundary cuts and refrains from installing the personware-shaping doublebinds.
!- definition : nonviolent communication, language of life * a method of communication that does not prioritize social programming over an individual's right to articulate and own their own speech.
Tags
Annotators
URL
-
- Jun 2022
-
tinyclouds.org tinyclouds.org
-
The fundamental mistake of Node.js was diverging from the browser
-
- May 2022
-
news.ycombinator.com news.ycombinator.com
-
an acknowledgement of network effects: LP is unlikely to ever catch on enough to be the majority, so there needs to be a way for a random programmer using their preferred IDE/editor to edit a "literate" program
This is part of the reason why I advocate for language skins for comparatively esoteric languages like Ada.
-
-
log.schemescape.com log.schemescape.com
-
memory usage and (lack of) parallelism are concerns
Memory usage is a concern? wat
It's a problem, sure, if you're programming the way NPMers do. So don't do that.
This is a huge problem I've noticed when it comes to people programming in JS—even, bizarrely, people coming from other languages like Java or C# and where you'd expect them to at least try to continue to do things in JS just like they're comfortable doing in their own language. Just because it's there (i.e. possible in the language, e.g. dynamic language features) doesn't mean you have to use it...
(Relevant: How (and why) developers use the dynamic features of programming languages https://users.dcc.uchile.cl/~rrobbes/p/EMSE-features.pdf)
The really annoying thing is that the NPM style isn't even idiomatic for the language! So much of what the NodeJS camp does is so clearly done in frustration and the byproduct of a desire to work against the language. Case in point: the absolutely nonsensical attitude about always using triple equals (as if to ward off some evil spirits) and the undeniable contempt that so many have for
this
.
-
-
www.mindprod.com www.mindprod.comSCID1
-
local a (e.g. aPoint) param p (e.g. pPoint) member instance m (e.g. mPoint) static s (e.g. sPoint)
This is really only a problem in languages that make the unfortunate mistake of allowing references to unqualified names that get fixed up as if the programmer had written
this.mPoint
orFoo.point
. Even if you're writing in a language where that's possible, just don't write code like that! Just because you can doesn't mean you have to.The only real exception is distinguishing locals from parameters. Keep your procedures short and it's less of a problem.
-
-
doc.cat-v.org doc.cat-v.org
-
This can get much worse than the above example; the number of \’s required is exponential in the nesting depth. Rc fixes this by making the backquote a unary operator whose argument is a command, like this: size=‘{wc -l ‘{ls -t|sed 1q}}
-
-
kramdown.gettalong.org kramdown.gettalong.org
-
for parsing and converting a superset of Markdown
-
-
gitlab.com gitlab.com
-
We overload the meaning of "GFM" to mean "GitLab Flavored Markdown", which is a superset of GitHub's version. However it can cause confusion as they are not the same thing.
-
- Mar 2022
-
akkartik.name akkartik.name
-
Understanding a strange codebase is hard.
John Nagle is fond of making the observation that there are three fundamental and recurring questions that dominate one's concerns when programming in C.
More broadly (speaking of software development generally), one of the two big frustrations I have when dealing with a foreign codebase is the simple question, "Where the hell does this type/function come from?" (esp. in C and, unfortunately, in Go, too, since the team didn't take the opportunity to fix it there when they could have...). There's something to be said for Intellisense-like smarts in IDEs, but I think the criticism of IDEs is justified. I shouldn't need an IDE just to be able to make sense of what I'm reading.
The other big frustration I often have is "Where does the program really start?" Gilad Bracha seems to really get this, from what I've understood of his descriptions about how module definitions work in Newspeak. Even though it's reviled, I think Java was really shrewd about its decisions here (and on the previous problem, too, for that matter—don't know exactly where FooBar comes from? welp, at least you can be reasonably sure that it's in a file called FooBar.java somewhere, so you can do a simple (and cheap) search across file names instead of a (slow, more expensive) full-text search). Except for static initializers, Java classes are just definitions. You don't get to have live code in the top-level scope the way you can with JS or Python or Go. As cumbersome as Java's design decision might feel like it's getting in your way when you're working on your own projects and no matter how much you hate it for making you pay the boilerplate tax, when it comes to diving in to a foreign codebase, it's great when modules are "inert". They don't get to do anything, save for changing the visibility of some symbol (e.g. the
FooBar
ofFooBar.java
). If you want to know how a program works, then you can trace the whole thing, in theory, starting frommain
. That's really convenient when it means you don't have to think about how something might be dependent on a loop in an arbitrary file that immediately executes on import, or any other top-level diddling (i.e. critical functionality obscured by some esoteric global mutable state).
Tags
Annotators
URL
-
- Oct 2021
-
www.microsoft.com www.microsoft.com
-
We would prefer: stay within single host language, but make code lookas declarative as possible.
-
- Jun 2021
-
www.wired.com www.wired.com
-
Johnson, Khari. ‘AI Could Soon Write Code Based on Ordinary Language’. Wired. Accessed 21 June 2021. https://www.wired.com/story/ai-write-code-ordinary-language.
-
-
-
Introduce behaviour that is likely to surprise users. Instead have due consideration for patterns adopted by other commonly-used languages.
-
-
stackoverflow.com stackoverflow.com
-
Programmers should be encouraged to understand what is correct, why it is correct, and then propagate.
new tag?:
- understand why it is correct
Tags
- spreading/propagating good ideas
- programming languages: learning/understanding the subtleties
- programming: understand the language, don't fear it
- annotation meta: may need new tag
- quotable
- combating widespread incorrectness/misconception by consistently doing it correctly
- having a deep understanding of something
- good advice
Annotators
URL
-
- Mar 2021
-
www.sitepoint.com www.sitepoint.com
-
JavaScript needs to fly from its comfy nest, and learn to survive on its own, on equal terms with other languages and run-times. It’s time to grow up, kid.
-
If JavaScript were detached from the client and server platforms, the pressure of being a monoculture would be lifted — the next iteration of the JavaScript language or run-time would no longer have to please every developer in the world, but instead could focus on pleasing a much smaller audience of developers who love JavaScript and thrive with it, while enabling others to move to alternative languages or run-times.
Tags
- level playing field
- programming languages: choosing the best language for the job
- runtime environment
- avoid giving partiality/advantage/bias to any specific option
- good idea
- separation of concerns
- neutral/unbiased/agnostic
- programming languages
- software freedom
- competition in open-source software
- neutral ground
- JavaScript: as a process VM
Annotators
URL
-
- Feb 2021
-
dry-rb.org dry-rb.org
-
Another solution is using the Safe Navigation Operator &. introduced in Ruby 2.3 which is a bit better because this is a language feature rather than an opinionated runtime environment pollution
-
-
en.wikipedia.org en.wikipedia.org
-
Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful, and versatile.
-
-
en.wikipedia.org en.wikipedia.org
-
Most C++ template idioms will carry over to D without alteration, but D adds some additional functionality
-
-
en.wikipedia.org en.wikipedia.org
-
In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, modified, and assigned to a variable.
-
-
github.com github.com
-
We think that, although Ruby is a great language for the backend, the view should be written in languages designed for that purpose, HTML and JavaScript.
-
- Oct 2020
-
-
One of the primary tasks of engineers is to minimize complexity. JSX changes such a fundamental part (syntax and semantics of the language) that the complexity bubbles up to everything it touches. Pretty much every pipeline tool I've had to work with has become far more complex than necessary because of JSX. It affects AST parsers, it affects linters, it affects code coverage, it affects build systems. That tons and tons of additional code that I now need to wade through and mentally parse and ignore whenever I need to debug or want to contribute to a library that adds JSX support.
Tags
- implementation complexity
- fundamental
- the cost of changing something
- can't keep entire system in your mind at once (software development) (scope too large)
- avoid complexity
- infectious problem
- for-reaching consequences
- complexity
- unintended consequence
- mental bandwidth
- semantics (of programming language)
- primary task/job/responsibility
- syntax
- engineers
- high-cost changes
- too complicated
- engineering (general)
- mentally filter/ignore
Annotators
URL
-
-
tech.ebayinc.com tech.ebayinc.com
-
that does not mean that I am advocating the other extreme–i.e., a templating language that allows a lot of logic. I find such templating languages, especially those that allow the host programming languages to be used inside the template, to be hard to read, hard to maintain, and simply a bad choice.
-
-
github.com github.com
-
Solid supports templating in 3 forms JSX, Tagged Template Literals, and Solid's HyperScript variant.
-
- Jan 2020
-
en.wikipedia.org en.wikipedia.org
-
www.techrepublic.com www.techrepublic.com
-
Larry Wall famously said he was driven to create Perl by how difficult it was to solve a problem while coding, as well as by an abundance of 'laziness, impatience and hubris'
-
the impetus may have been more the challenge of creating a language of his own.
-
To an outsider, creating your own programming language might seem akin to saying 'I'll build my own airplane
-
- Nov 2019
-
reasonml.github.io reasonml.github.io
-
Reason is not a new language; it's a new syntax and toolchain powered by the battle-tested language, OCaml.
-
- May 2019
-
www.gowitek.com www.gowitek.com
-
Go Programming Language publicly in 2009 they were also looking to solve certain challenges of the existing Computer languages. Of the many features that it demonstrated (we will get to those soon enough) it was also helpful in addressing the strange dilemma of hardware and software that was emerging.
Golang is a modern computing language, designed especially for modern computing needs.
-
- Oct 2018
-
medium.freecodecamp.org medium.freecodecamp.org
- Mar 2018
-
halide-lang.org halide-lang.orgHalide1
-
-
web-static-aws.seas.harvard.edu web-static-aws.seas.harvard.edu
-
CS 252r: Advanced Topics in Programming Languages by Stephen Chong
-
- Nov 2017
-
eecs481.org eecs481.org
-
officially-approvedprogramminglanguagesatGoogle:C++,Java,Python,Go,orJavaScript.Minimizingthenumberofdifferentprogramminglanguagesusedreducesobstaclestocodereuse and programmer collaboration.
Googleの承認済みプログラム言語
-
- Sep 2017
-
github.com github.com
-
hm. lots of moving parts. Doesn't give the minimal / orthogonal feel of kernel monte + safeScope. No Near / Far refs?
(describe any?) goes to stdout - ambient!
Tags
Annotators
URL
-
- Apr 2017
-
emaren84.github.io emaren84.github.io
-
결국 메타언어에 존재하는 정보를 프로그래밍 언어에 합리적으로 추가하면, 더 유용하게 사용할 수 있다.
-
- Jun 2016
-
www.apple.com www.apple.com
-
And because it’s built to take full advantage of iPad, it’s a first-of-its-kind learning experience.
Sure, we’ve heard that before. But there’s reason to be cautiously optimistic about this one.
-
- Jul 2015
-
www.venturesity.com www.venturesity.com
-
Up for a Challenge?
Do you have what it takes? Signup on www.venturesity.com and unlock opportunities.
-
- Oct 2014
-
juliawebstack.org juliawebstack.org
Tags
Annotators
URL
-