The Question Nobody Can Answer Objectively
Pretty is subjective. That is the only honest answer anyone can give you. I have spent years around people who treat programming languages like fashion choices, and it goes nowhere productive. Still, I can tell you what most experienced developers mean when they actually say a language looks beautiful, because there are recurring patterns to it. The question comes up constantly on forums, usually followed by flame wars. The real answer depends on what kind of code you read daily and how much you value consistency over cleverness. Python consistently wins casual votes because it enforces indentation as syntax, which removes a whole class of visual noise. Go gets praise for its strict formatting rules and standard library layout. Rust draws a dedicated following for its error messaging structure and cargo.toml simplicity. None of these are universal truths. Indentation matters, but it is not the whole story. Naming conventions, line length discipline, and operator placement create the bulk of visual coherence. A language that forces you to use braces on separate lines will feel cluttered compared to one that uses them inline. This is a minor point that people argue about for hours.
I once spent two days debugging a JSON parser because a colleague used a language where semicolons were optional and the compiler inferred them in ways that completely changed block scope. The code compiled clean. It was a mess to read and a nightmare to trace. That experience made me appreciate languages with rigid structural rules, even when they feel restrictive.
Specific Languages Worth Looking At
Haskell has a mathematical elegance that appeals to people who came from pure math backgrounds. The type signatures read like documentation. The downside is that reading real production Haskell without training takes significant effort, and the community tendency toward point-free style makes code nearly illegible to anyone outside the circle. Julia writes like Python but compiles like C. The syntax is clean. Package management used to be broken for years, which is worth noting if you are considering it for actual work. I switched teams using Julia for data pipelines and immediately regretted it when I needed to debug a dependency conflict at 2 AM. The ecosystem has improved, but it was bad enough to leave a mark. Crystal is another contender. Ruby-like syntax with static typing and real compilation. The code looks straightforward. The compile times can be brutal on larger projects, and the standard library still lags behind more established languages.
Get the Full Details

The Counter-Intuitive Truth
The prettiest language for you is almost never the one that looks nicest on paper. It is the one whose constraints match your problem domain well enough that you stop fighting the syntax. Elixir handles concurrent state beautifully because its immutability rules force you into patterns that scale. C++ can look like a horror show if you try to force it into modern patterns without understanding RAII, but someone who knows the tools can make it readable in ways that surprise people. There is a common pitfall where developers judge a language by a toy example they found on a blog. Those examples are curated. The real test is maintaining a codebase for six months. You will see the ugly parts then. Every language has them.
Practical Guidance
If you want a language that looks good to most people, learn Python or Go. Both have strong formatting standards and huge ecosystems. If you care about type safety and don't mind a steeper learning curve, Rust is worth the investment. The compiler will correct you constantly, which feels painful at first but produces code that reads predictably. Don't bother downloading multiple languages just to compare syntax. Pick one, build something real, and notice which ones you enjoy reading when you come back after a month. That is how you actually find your answer.