# The alphabet in programming languages

Our task is to, for each letter of the (English) alphabet, write a program that prints the alphabet, in a language whose name starts with that letter.

Input: none

Output:

abcdefghijklmnopqrstuvwxyz


uppercase and trailing newline optional

Rules:

• The scoring metric is the length of the programming language name, plus the length of the code. Hence, C will be assessed a "penalty" of 1, while GolfScript will be assessed a penalty of 10.
• The programming language should have existed prior to the writing of this post, on this eighteenth of April 2011.
• If a programming language name's first letter is not an English letter, it should not be coerced into one. It will be treated as a separate letter (meaning less competition).
• No answer will be accepted until every English letter has a solution.

Current rankings:

Tell me if I'm missing anybody.

var QUESTION_ID=2078;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&r.indexOf('non-competing')===-1&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],lang:/<a/.test(a[1])?jQuery(a[1]).text():a[1],link:s.share_link})}),e.sort(function(e,s){var d=e.lang[0].toLowerCase(),a=s.lang[0].toLowerCase();return(d>a)-(d<a)||e.size-s.size});var s={},a=null,n="A";e.forEach(function(e){n=e.lang[0].toUpperCase(),a=e.size;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+" is for").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.lang,p=o[0].toUpperCase();s[p]=s[p]||{language:e.language,lang:e.lang,letter:p,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return(e.letter>s.letter)-(e.letter<s.letter)});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.language).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),jQuery("#languages").append(jQuery(i))}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*(?:<[^>]+>)?(?:[^]+?for )?((?:<a[^>]*?>)?(?:(?! [(=→-])[^\n,:])*[^\s,:])(?:[,:]| [(=→-]).*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Winners by Letter</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <h2>Everything</h2> <table class="answer-list"> <thead> <tr><td></td><td>Language</td><td>Author</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>

• Are we allowed to print junk to stderr? – Peter Taylor Apr 18 '11 at 22:02
• @Peter Taylor: Go nuts. To answer your question, yes, printing junk to stderr is fine (as long as stdout is correct). – Joey Adams Apr 18 '11 at 22:05
• Is it OK to print the alphabet IN BIG LETTERS? – dorukayhan Jun 21 '16 at 18:25
• Is *0*5AB1E the same as *o*sabie :P? – Magic Octopus Urn Jun 6 at 14:58
• @MagicOctopusUrn Wouldn't matter due to this rule: "The programming language should have existed prior to the writing of this post, on this eighteenth of April 2011." – Kevin Cruijssen Sep 26 at 12:35

# Tcl - 31 + 3 = 34

puts abcdefghijklmnopqrstuvwxyz

• My shortest iterative is longer, 45 :time {puts [format %c [expr [incr i]+96]]} 26 – sergiol Jul 21 '17 at 18:41

C++, 32 + 3penalty = 35

I could not find C++. So this is my option for it:

char a=96;while(a++<122)cout<<a;


the output is:

abcdefghijklmnopqrstuvwxyz


PS. It's my first golf, pls comment if i did something wrong

## P is for PHP - 33 characters - Score: 36

echo implode("",range("a", "z"));


## C++: 32+3 = 35

char c=96;while(c++<122)cout<<c;

• I almost want to score this as 32, given that your code contains "c++". Alas, I didn't put this in the original rules. – Joey Adams Jul 15 '14 at 20:44
• @JoeyAdams You're right, I corrected it :) – padawan Jul 15 '14 at 21:00

# U is for Unix Shell, 21 Characters → Score: 31

echo {a..z}|tr -d " "


# V is for VBScript, 40 Characters → Score: 48

for i=97 to 122:a=a+chr(i):next:MsgBox a


# P is, in fact, for PHP - 23 chars / 27 score

<?=join('',range(a,z));


## C is for Clojure - (39 or 53) + 7 = 46 or 60

No, it doesn't stand for C. In Clojure, all functions form closures, so I would argue this is a complete answer, in 39 bytes.

(doseq[c(range 97 123)](print(char c)))


But if you really want it with the main function, 53 bytes.

(defn -main[](doseq[c(range 97 123)](print(char c))))


But, this isn't a Clojuric way to solve this problem. Let's try something simpler (could be golfed for 4 bytes).

(print (apply str (map char (range 97 123))))


Much better, isn't it?

# N is for Nu, 35 Characters → Score: 37

(puts 'abcdefghijklmnopqrstuvwxyz')


# N is for Nim, 31 → Score: 34

for x in'a'..'z':stdout.write x


# Mouse, 26 + 5 = 31

97a:(a.123<^a.&DUP !'1+a:)


Which outputs:

abcdefghijklmnopqrstuvwxyz


Note the lame way would be:

"abcdefghijklmnopqrstuvwxyz"


Which gets printed implicitly immediately (as string literals do, unfortunately), but it's 28 bytes.

# J is for Java - score: 84 characters + 4 = 88

interface a{static void main(String[]A){for(char c=65;c<91;System.out.print(c++));}}


This prints ABCDEFGHIJKLMNOPQRSTUVWXYZ instead of abcdefghijklmnopqrstuvwxyz. If it's disallowed, one can simply set c to 97 (a) and loop until it reaches 123 ({) at the cost of one extra byte:

interface a{static void main(String[]A){for(char c=97;c<123;System.out.print(c++));}}


V for VBA: 60

Sub VforVBA()
For i=1 To 26: a=a & Chr(64+i): Next: Debug.Print a
End Sub

• Can you remove any of the spaces between the tokens? E.g. For i=1To26:a=a&Chr(64+i):Next:Debug.Print a – Joey Adams Jul 15 '14 at 17:44
• @JoeyAdams edited as suggest – Alex Jul 15 '14 at 22:00
• Did you test this? Is "Fori" treated as "For i"? – Joey Adams Jul 16 '14 at 13:52
• @joeyAdams Yea you're correct, indeed the 1To26 and other parts won't work as well. I have changed it back to origin answer – Alex Jul 16 '14 at 14:08
• @Alex I think you can remove some spaces (i = 1, : a = a & Chr(64 + i), : Next: Debug) – Erik the Outgolfer Aug 3 '16 at 9:54

## S is for seed7, 137114 78 characters → Score: 83

const proc: main is func begin writeln("abcdefghijklmnopqrstuvwxyz");end func;


# F is for Funge → 19 chars + 5 = 24

'\#;1+::,"@9"+\#@_;


Something that makes this unique is that it doesn't contain a single letter of the alphabet! Hence why I didn't shorten it by replacing "@9"+ with 'y. I'll take the points hit for it.

Try it with my interpreter here: BefungeSharp.

# L is for Lua, 49 bytes → Score: 52

Previous answer for Lua had each letter printed on a new line. All on one line:

s=""for i=97,122 do s=s..("").char(i)end print(s)


Try it online!

# P is for Powershell, 19 + 10 = 29

Because I'm bored at the moment, I hope you don't mind if I put up a quick PS that wouldn't have contended anyways...

97..122|%{[char]$_}  Simple char typecasting. You can shave off one byte by doing the alphabet in all caps. 65..90|%{[char]$_}


# Python, 36 + 6 = 42

print''.join(map(chr,range(97,123)))


Not the shortest...

## R, 26 bytes (score 27)

paste(letters,collapse="")


Output:

[1] "abcdefghijklmnopqrstuvwxyz"


# Z is for Zsh, 21+3 → 24 bytes

echo {a..z}|tr -d ' '


Try It Online!

# B is for Bash, 11 -> 15 24

echo {a..z}

echo {a..z}|tr -d \
^
space

• Already posted by Eelvex, but sadly it is not valid, because not produces the exact required output. – manatwork Apr 27 '16 at 15:17
• Don't take it the wrong way. Keep trying, keep posting. If you found this independently, you're very good. In the future, try answering less popular challenges. :-) – wizzwizz4 Apr 28 '16 at 16:59
• ETHproductions, done. – Scotow Jan 27 '18 at 23:24

# S is for SmileBASIC, 39 37 bytes

FOR I=65TO 90?CHR$(I);:NEXT  • I do not believe you have properly read the scoring rules for this challenge. Your score is the length of your code plus the length of the language name. – Pavel Feb 3 '17 at 6:25 • Fixed, sorry. (padding) – snail_ Feb 3 '17 at 13:49 • You can save 2 characters by adding 65 to the start/end of the loop. – 12Me21 Feb 3 '17 at 13:58 ## S is for SMBF, 10 chars -> Score: 14 SMBF stands for Self-modifying Brainf***, and both names are used interchangeably. The original interpreters were named smbf.c and smbf.rb. \x1a is a hex literal (a single non-printable ASCII character) for the decimal number 26. <[-<.+>]a\x1a  The \x1a is used as a loop counter. a is printed and incremented each time. # R is for R, 17 bytes Score -> 18 intToUtf8(97:122)  Try it online! ## M is for M, 20 characters → Score: 21 let s={"a".."z"}in s  # B is for Brachylog, 2 bytes → Score:11 (not competing though I guess) Ạẉ  Try it online! • According to Github, the initial commit to the repository linked in your answer was in 2015. Unless Brachylog existed as a language in 2011, this answer is invalid. – pppery Sep 22 at 18:38 # S is for Swift, 76 characters -> Score: 81 var s="" for i in 97...122{s.append((Character(UnicodeScalar(i))))} print(s)  • Isn't it easier to just print a string containing the alphabet? – acrolith Oct 21 '16 at 16:41 • Of course, but that just wouldn't be as fun – heratyian Oct 21 '16 at 17:57 • my_string could be reduced to one letter. – pppery Sep 22 at 18:41 • good call @pppery – heratyian Sep 23 at 17:27 • You should update the bytecount after golfing your answer. – pppery Sep 23 at 19:05 # I is for Io, 31 characters -> Score: 33 for($,65,90,\$asCharacter print)


# F is for Fish, 16 bytes; score 20

"a"r:o1+:"{"=?;r


# X is for x86, 9 bytes + 3 -> score 12

(or "x86 machine code" for 9 + 16 = 25)

b0 61 aa 40 3c 7a 76 fa  c3


This is a function, callable with void alpha(char edi[26]), like the x86-64 System V calling convention but in 32-bit mode. Or 16-bit mode (where 40 decodes as inc ax, otherwise the same).

The question says "program" that "prints", and this is neither of those things. I'm not sure this should count. Making a DOS .com executable out of this would take a few extra bytes, or the .text section of a Linux executable, including print and exit system calls. But there are several other answers (like some C++ ones) that are merely snippets that wouldn't even compile without #include<iostream> and int main(){.

I'm just going to follow modern codegolf defaults for I/O methods (Default for Code Golf: Input/Output methods) which include returning a string in the caller's buffer.

An x86-64 version would cost 1 extra byte for inc al or inc eax, and 3 extra characters in the language name. I could call it x64 but that implies Windows where the standard calling convention doesn't use RDI. But that's irrelevant, this is an asm / machine-code answer which doesn't care about being called from other languages. So anyway, I could say "x64" for a 10 + 3 = 13 version, but I hate that name because it goes with using "x86" to mean specifically 32-bit, instead of the whole ISA.

Ungolfed:

                machine code     NASM/FASM source
1                         alpha:
2 00000000 B061               mov  al, 'a'
3                         .loop:               ; do {
4 00000002 AA                 stosb              ; *edi++ = al
5 00000003 40                 inc  eax           ; more compact than inc al
6 00000004 3C7A               cmp  al, 'z'
7 00000006 76FA               jbe  .loop       ; }while(al<='z')
8 00000008 C3                 ret


Try it online! with a FASM _start caller.

Justification: "x86 machine code" is as much a description as a name. Machine code is something you can program in and can be considered a family of languages. But those languages don't usually have names other than the ISA. I'd usually say "x86 32-bit machine code" when posting an answer like this, but that's just to make it clear the answer is the machine code, not the asm source text in the same listing.

Out of all ISAs, x86 is clearly recognizable as the name of this one. It's not a language that people regularly program in directly; usually we generate it from assembly language (or higher level languages).

"IA" (Intel Architecture) or "IA-32" are other common names for the ISA, so I could argue for a score of 11 in the letter "I". (But the only "x" answer is xtal at 35, so posting this as x86 is a more useful answer for reducing the total sum length across all letters.

Of course "x86" can be considered ambiguous between the machine code and assembly language. And without context it's not obviously a programming language because it's better known as the name of an ISA.

• I like this answer, it's a great intro to x86 assembly. I can't believe how few bytes each instruction takes. – Joey Adams Oct 7 at 16:39
• @JoeyAdams: There are special-case short forms for the accumulator (EAX / AX / AL), and instructions with implicit operands like stosb. In "normal" 32-bit code most instructions are 2 to 4 bytes long, or longer with larger addressing modes or SIMD opcodes... And 64-bit code needs a REX prefix on many instructions, making the avg instruction length more like 4 in compiler output. See Tips for golfing in x86/x64 machine code I just updated the source version with comments for the benefit of people who don't know x86 asm, since you mentioned it :P – Peter Cordes Oct 7 at 16:44
• But yes, ISAs with variable-length instructions optimize for the most common cases. Original 8086's main bottleneck was code-fetch from memory so they put some care into that design. It's evolved over time into an ugly Frankenstein's monster though, with much lack of long-term thinking about ISA extensions. :( See Agner Fog's 2009 blog post, Stop the instruction set war – Peter Cordes Oct 7 at 16:50