Show HN: Codigo – The Programming Language Repository

codigolangs.com

77 points by adamjhf 4 days ago

Codigo is a site I've built for discovering, exploring and comparing programming languages, including language news, trends and code examples.

I couldn't find any definitive resource for finding new languages and comparing them, so decided to make one.

It combines dynamic data from sources like PyPL Index, TIOBE Index and official feeds as well as static data about each language defined in a structured format. The language data is open-contribution and can be updated by anyone on the GitHub repository: https://github.com/codigo-langs/codigo.

I styled it specifically for coders - using a monospaced font and terminal-esque styling, along with many common IDE themes to choose from.

Codigo is built using Rust, Axum, HTMX and Alpine.js.

Keen to hear any feedback!

pella 2 days ago

I’m glad to see there’s a substantial metadata system powering the portal (and even minimal Wikidata integration + CC0-1.0 license! )

This is the Julia: https://github.com/codigo-langs/codigo/blob/master/languages...

I assume the initial database was built on Wikidata plus a lot of data cleaning. Is the code for the Wikidata synchronization available anywhere? I can’t seem to find it in the repo.

One thing you could add is a free-form wiki-style description field, where you could even embed an "awesome" list for each language, for example: https://github.com/coderonion/awesome-julia-list

tgv 2 days ago

You might want to add some relation between the versions of Ada. Each is basically a superset of the previous version. You could treat them as one, and specify per feature from which version onward it is part of the language, e.g. https://www.adaic.org/advantages/ada-comp-chart

  • adamjhf a day ago

    Yes, at the moment it’s just a flat listing of languages. Will think about how to solve for dialects etc. without making it overly complex.

pella 2 days ago

I’m interested in a list of new open-source programming languages released in the last 5, 3, and 1 years - ideally organized by category. Does such a list exist anywhere?

EDIT: minimal wikidata version: https://w.wiki/E5e3

  • genewitch 2 days ago

    How? Just a bunch of volunteers? Make a wiki-like and let people edit it, show HN, and maybe eventually PL makers will add their PL to your database.

    Even if you scrape Wikipedia, or stack overflow or whatever, you're going to miss the newest and also the esoteric and possibly even wider use stuff. Basically you can't do it alone.

    My life is a series of "why doesn't this exist? Oh, what a gigantic pain in the ass. That's why it doesn't exist. God bless anyone who makes this, because it ain't gunna be me" situations. I hope someone has done what you are looking for.

    • pella 2 days ago

      I have created a minimal wikidata query https://w.wiki/E5e3

        SELECT ?language ?languageLabel ?inceptionDate 
               (GROUP_CONCAT(DISTINCT ?website; SEPARATOR=", ") AS ?websites)
               (GROUP_CONCAT(DISTINCT ?developerLabel; SEPARATOR=", ") AS ?developers)
               (GROUP_CONCAT(DISTINCT ?paradigmLabel; SEPARATOR=", ") AS ?paradigms)
        WHERE {
          # Find items that are either programming languages or types of programming languages
          {
            ?language wdt:P31 wd:Q9143 .  # programming language
          } UNION {
            ?language wdt:P31 wd:Q116481801 .  # type of programming language
          }
          
          # Get the inception date
          ?language wdt:P571 ?inceptionDate .
          
          # Filter for languages created within the last 10 years
          FILTER(?inceptionDate >= "2009-05-12"^^xsd:dateTime)
          
          # Optional properties to get more information
          OPTIONAL { ?language wdt:P856 ?website . }  # official website
          OPTIONAL { 
            ?language wdt:P178 ?developer . 
            ?developer rdfs:label ?developerLabel .
            FILTER(lang(?developerLabel) = "en")
          }  # developer
          OPTIONAL { 
            ?language wdt:P3966 ?paradigm . 
            ?paradigm rdfs:label ?paradigmLabel .
            FILTER(lang(?paradigmLabel) = "en")
          }  # programming paradigm
          
          ?language rdfs:label ?languageLabel .
          FILTER(lang(?languageLabel) = "en")
        }
        GROUP BY ?language ?languageLabel ?inceptionDate
        ORDER BY DESC(?inceptionDate)  # Sort by date, newest first
        LIMIT 100
      • genewitch a day ago

        It's a good start, and i can't think of missing items off-hand, and i didn't know you could do that. I've done queries like this on the wiki sql itself locally, but i didn't know there was a notebook interface to querying like that.

philocalyst 2 days ago

Wondering if you would be interested in plugging into my

https://github.com/philocalyst/lang-config

Which contains comment tokens, block and line, common language servers, special pairs, recognized shebangs, root scopes, etc.

It's mostly for use in one of my other projects, although you can see some of its higher aspirations one day in the README. Would love to collaborate with you and make it useful for a real use-case outside my own! If any of the information contained there could be useful! Reach out through an issue or through an email (linked in my github profile) if you're keen

LandR a day ago

If you change the theme, sometimes the theme dropdown shows white text on a white background.

e.g. on chrome / Ubuntu, change theme to material or nord-dark, then dropdown is all white (shows if you hover the items)

Same if you go to a programming language page, the drop down for code examples is white on white

  • adamjhf 10 hours ago

    Thanks for flagging. This is hopefully fixed now.

blami 2 days ago

Great job! Would be lovely to have filters on when language was created. Also one minor nit, I am not super mouse oriented person and wanted to bookmark the site but ctrl+d is mapped to scroll down.

  • adamjhf 10 hours ago

    Thanks for raising that. I've changed that key mapping now to a less common one to avoid conflicts.

elviejo a day ago

You can also look at pldb.com It has a huge list of programming languages and its attributes.

worldsayshi 2 days ago

Would be interesting to see which languages a language has influenced in addition to which influenced it.