Is a programming language's aesthetics important?
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationObviousness (is that a word?) is my #1. So: Javascript is near the bottom of the heap. C# (pre v6 ish) and VBScript (of all things) are near the top. The recent additions to C# where the language is becoming the proverbial kitchen sink are depressing to me. Some are great. Some seem to be there to solve very edge case issues that I worry will generate more confusion and pain for new developers than they will help those experts who choose to use them.
cheers Chris Maunder
-
Obviousness (is that a word?) is my #1. So: Javascript is near the bottom of the heap. C# (pre v6 ish) and VBScript (of all things) are near the top. The recent additions to C# where the language is becoming the proverbial kitchen sink are depressing to me. Some are great. Some seem to be there to solve very edge case issues that I worry will generate more confusion and pain for new developers than they will help those experts who choose to use them.
cheers Chris Maunder
Chris Maunder wrote:
Some are great. Some seem to be there to solve very edge case issues that I worry will generate more confusion and pain for new developers than they will help those experts who choose to use them.
+1 Late changes in C# reminds me a quote of (I think) Woody Allen: Two people get married to solve problems that you don't have living alone.
M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.
-
Obviousness (is that a word?) is my #1. So: Javascript is near the bottom of the heap. C# (pre v6 ish) and VBScript (of all things) are near the top. The recent additions to C# where the language is becoming the proverbial kitchen sink are depressing to me. Some are great. Some seem to be there to solve very edge case issues that I worry will generate more confusion and pain for new developers than they will help those experts who choose to use them.
cheers Chris Maunder
:thumbsup:
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationMarc Clifton wrote:
What makes a language aesthetically pleasing?
Features that allow me to express the ideas I have with succinct, clear mechanisms.
Marc Clifton wrote:
Is that something that should be considered when choosing a programming language (assuming you have choice)?
Yes, because it's not just aesthetics - it's ergonomics! And an ergonomic language puts less friction in your way.
Marc Clifton wrote:
What languages do you find aesthetically pleasing to work in and why?
[Rust](https://www.rust-lang.org/), [Haskell](https://www.haskell.org/), or [F#](https://en.wikipedia.org/wiki/F\_Sharp\_(programming\_language)) if you insist on a .NET language - the features that I enjoy are generally enabled by a strong, static (but inferred) type system (algebraic types, pattern matching, partial application in Haskell and F#) I'm not keen on Go either - but for different reasons than yourself, I suspect. I work in C++ on a daily basis (quite happily), and parts of Go just bug me...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
I'm reasonably tolerant when it comes to language aesthetics. Any modern, structured language would be fine. For many years, I worked in a proprietary language with keywords instead of braces, and with types and return values on the right:
IF...THEN...ELSE...ENDIF;
[FOR | WHILE] DO...ENDDO;
DCL [INIT ];
DCL PROC() RETURNS IS BLOCK...ENDBLOCK;
It also had pointers, constness, strong typing, and various things that were innovative for a language designed around 1977. In the mid-1990s, it evolved to include object orientation. Had it been made publicly available from the outset, it would probably have displaced C. Q1. Type safety, object orientation, tuples, templates (or at least generics). For what I'm doing, I need pointers and no garbage collection. Any high-level constructs (e.g., for threading) will probably be wrong or just get in the way. Q2. Aesthetics, sure. But the unaesthetic language beats the paternalistic language every time, where paternalism means the language precluding something that you need to be able to do because the language designers thought they knew better. Q3. C++, not so much because I find it aesthetic, but because I don't find it paternalistic. There are certainly things I dislike about it, but they don't center around aesthetics.
Robust Services Core | Software Techniques for Lemmings | Articles
Greg Utas wrote:
Had it been made publicly available from the outset, it would probably have displaced C.
Hmmm - it sounds similar to [Ada](https://en.wikipedia.org/wiki/Ada\_(programming\_language)), so I suspect C would have survived as 'language of choice'...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
Greg Utas wrote:
Had it been made publicly available from the outset, it would probably have displaced C.
Hmmm - it sounds similar to [Ada](https://en.wikipedia.org/wiki/Ada\_(programming\_language)), so I suspect C would have survived as 'language of choice'...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
Sure, no different than VHS vs Betamax. But it was a competitive advantage in that our major competitor used C. It was mature several years before Ada and wasn't a kitchen sink language. It could also have come with an O/S suitable for large, embedded systems, and a version control and build system that was also advanced for its time, and synchronized for multi-site development by the late 1980s.
Robust Services Core | Software Techniques for Lemmings | Articles
-
I'm reasonably tolerant when it comes to language aesthetics. Any modern, structured language would be fine. For many years, I worked in a proprietary language with keywords instead of braces, and with types and return values on the right:
IF...THEN...ELSE...ENDIF;
[FOR | WHILE] DO...ENDDO;
DCL [INIT ];
DCL PROC() RETURNS IS BLOCK...ENDBLOCK;
It also had pointers, constness, strong typing, and various things that were innovative for a language designed around 1977. In the mid-1990s, it evolved to include object orientation. Had it been made publicly available from the outset, it would probably have displaced C. Q1. Type safety, object orientation, tuples, templates (or at least generics). For what I'm doing, I need pointers and no garbage collection. Any high-level constructs (e.g., for threading) will probably be wrong or just get in the way. Q2. Aesthetics, sure. But the unaesthetic language beats the paternalistic language every time, where paternalism means the language precluding something that you need to be able to do because the language designers thought they knew better. Q3. C++, not so much because I find it aesthetic, but because I don't find it paternalistic. There are certainly things I dislike about it, but they don't center around aesthetics.
Robust Services Core | Software Techniques for Lemmings | Articles
Greg Utas wrote:
Had it been made publicly available from the outset, it would probably have displaced C.
More likely, it would be ignored because it is insufficiently C-like. This criticism occurs in spite of the fact that C has not yet been invented
popularized
.Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationDo you know any French? The adjectives are on the right. It's a matter of getting used to it. But I do prefer types on the left, mainly because it is a standard in a few important languages, and therefore easier to read.
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationIt could be construed that Q1 and Q2 answers were written to come up with your favorite as the choice. Or not. How about taking a different tack: At first glance, the language should be intimidating. Something that will scare off the kode-kitties on the one hand and impress management on the other. Return coding to a priesthood for the elite. Perhaps the best way to choose languages is to cull the heard. **Therefore "C" - especially with inline asm { } blocks - is a thing of beauty - and thus a joy forever.
**"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationYes. Almost anything passes that is not like C (there you go, Python), or the other UNIX-hell-spawn, bash & alike (there you go, NSIS / PowerShell / ...).
-
I love thinking about random stuff like this :thumbsup: 1) As long as the language's syntax is easy for my eyes to parse quickly after learning it, I'm cool with it. The only languages I really don't enjoy are the ones that use keywords for structural information. It makes them harder to read in my opinion because there's no categorical distinction between functional and structural elements.
public class Example
public property Info as string
end classdim specificExample as Example
is way harder to parse than
public class Example
{
public string Info { get; set; }
}Example specificExample;
in my opinion. It gets downright silly when you start adding more complexity like manually-implemented properties, methods, etc. 2) Yes, for practical reasons. If a language is difficult to read it will take longer to maintain and be more prone to developer error. 3) C#, F#, Typescript, and C++ come to mind as languages I've enjoyed working in. I will say though C++'s types have never made sense to me. Why, in a language designed to read left-to-right, does the type read right-to-left?
int const * * const example; //constant pointer to a pointer to a constant integer
EDIT: Typo in the VB code :sigh: EDIT2: Removed the specificity of #3's example given the comment.
-
In C and C++, you have a type and you have a variable. Period. All of the pointer or reference nonsense is part of the type. Reference is just a hidden pointer that MUST be initialized. I think you meant "const int" based on the comment.
:confused: Y-yea? I'm aware of that and confused on why you would think I wasn't. Also "const int" is the same thing as "int const." Try it. I prefer "int const" because it's more consistent with how the rest of the type is read. EDIT: Ohh, I think I get the confusion? I specified variable declarations because it's the simplest scenario. Method parameters, returns, etc are all still using a type the same way basically (blueprinting some region of data) so I tend to think of them in the same vein. My bad if that was confusing.
-
:confused: Y-yea? I'm aware of that and confused on why you would think I wasn't. Also "const int" is the same thing as "int const." Try it. I prefer "int const" because it's more consistent with how the rest of the type is read. EDIT: Ohh, I think I get the confusion? I specified variable declarations because it's the simplest scenario. Method parameters, returns, etc are all still using a type the same way basically (blueprinting some region of data) so I tend to think of them in the same vein. My bad if that was confusing.
You were talking about why is it right to left for declarations. I am pointing out that I parse those left to right as Type, variable. const int **, example. // gcc takes this. Really const? const int const x; I guess if you are reading more right to left for declarations, then your int const is the same as my const int. Reminds me of a friend who was an Arabic speaker as his primary language. He would always read ">" as "less than" when speaking English, but never missed the correct logic.
-
You were talking about why is it right to left for declarations. I am pointing out that I parse those left to right as Type, variable. const int **, example. // gcc takes this. Really const? const int const x; I guess if you are reading more right to left for declarations, then your int const is the same as my const int. Reminds me of a friend who was an Arabic speaker as his primary language. He would always read ">" as "less than" when speaking English, but never missed the correct logic.
Ah, I get what you mean! On the gcc thing,
const
is an idempotent modifier so letting it apply multiple times doesn't cause issues. This works too:const const int const const x = 5;
Good for triggering a mild existential crisis in an OCD developer :laugh: -
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationWhen I read a program, I looking for variable names. It makes a lot easier to find then if they are first and not second. What type a variable is is a secondary concern.
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationFor sure, for sure, aesthetics is important. IMO, a language must balance brevity with clarity of understanding. The simple parameter I use is that I must be able to look at a section of code and "grok" it in a few seconds. That means I must understand the explicit intent of the author and the methodology used to implement that intent as well as all the implicit mechanisms used. Aesthetics is an essential part of achieving that understanding. This is why I am against such things as lambdas--it's just to easy to miss what is going on. The plethora of languages nowadays should tell us something about the state of software development. (I'm still trying to figure out what that "something" is.)
-
Based on my rant on the Insider News[^] I realized, this is an interesting question (well, at least for me!) What makes a language aesthetically pleasing? Is that something that should be considered when choosing a programming language (assuming you have choice)? What languages do you find aesthetically pleasing to work in and why? My answers: Q1: No pointers, no &, type safety, left-to-right readability, meaning that types are on the left, not the right, return types are on the left, not the right, expressiveness in how things are returned -- tuples, for example, are cool when used judiciously, as are
ref
types (ok, that's almost like a pointer.) Expressiveness in conditionals, loops, support for functional programming style, and must support reflection (ok, that's not exactly a language feature but is related to how the compiler treats the human-readable code.) Q2: YES! Q3: C#!!! For the reasons stated in the answer to Q1Latest Articles:
Proxy class for TypeScript/Intellisense DOM manipulationGood question! Java and, dare I admit it JavaScript (without fancy add-ons), are my favourite programming languages, though I quite like traditional (i.e. non-MS) C++ too. I think the reason why I prefer Java is precisely because I do find it aesthetically pleasing. I used to code in C# but over time it morphed into something I found aesthetically displeasing, so I stopped using it. I think you hit the nail on the head - but aesthetics are of course a personal thing and not everyone will agree on which language is the most aesthetic.