{"id":13609793,"url":"https://github.com/munificent/finch","last_synced_at":"2025-12-18T00:20:46.050Z","repository":{"id":989660,"uuid":"796802","full_name":"munificent/finch","owner":"munificent","description":"The Finch programming language","archived":true,"fork":false,"pushed_at":"2020-08-04T20:49:57.000Z","size":2479,"stargazers_count":242,"open_issues_count":0,"forks_count":34,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-07T15:46:47.257Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://finch.stuffwithstuff.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/munificent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-07-25T17:27:55.000Z","updated_at":"2024-11-03T03:29:57.000Z","dependencies_parsed_at":"2022-08-16T11:45:16.506Z","dependency_job_id":null,"html_url":"https://github.com/munificent/finch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/munificent%2Ffinch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/munificent%2Ffinch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/munificent%2Ffinch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/munificent%2Ffinch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/munificent","download_url":"https://codeload.github.com/munificent/finch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248630035,"owners_count":21136366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:38.102Z","updated_at":"2025-12-18T00:20:46.018Z","avatar_url":"https://github.com/munificent.png","language":"C++","readme":"Finch is a simple bytecode interpreted, purely object-oriented,\nprototype-based, dynamically-typed programming language. It's mostly\ninspired by Smalltalk, Self, and Javascript.\n\nIt is written in C++ with a hand-written lexer and parser. It has\nminimal dependencies. I want Finch to be:\n\n*   Syntactically expressive yet minimal. Your code should look beautiful and\n    do what you want.\n\n*   An example of a small, clean C++ codebase for an interpreter. If you can\n    read C++ and want to learn more about programming languages, I hope Finch's\n    code will be a good primer.\n\n*   A language in the Smalltalk family that's friendly to people coming from a\n    text file and curly brace background.\n\n*   A minimal prototype-based dynamic language. I think prototypes are a really\n    cool paradigm, but Self goes too far, and Javascript doesn't go far enough.\n\n*   Easily embeddable in other applications. I don't know if Finch ever will\n    have real use, but if it does, it will likely be as a configuration or\n    scripting language within a larger application, much like Lua.\n\n\nA Taste of the Language\n-----------------------\n\nHere's a little example to get you going. This little program doesn't\ndraw, but it will tell you what turns to make to draw a dragon curve:\n\n    // create an object and put it in a variable \"dragon\"\n    dragon \u003c- [\n      // define a \"trace:\" method for outputting the series of left and\n      // right turns needed to draw a dragon curve.\n      trace: depth {\n        self traceDepth: depth turn: \"R\"\n        writeLine: \"\" // end the line\n      }\n\n      // the main recursive method\n      traceDepth: n turn: turn {\n        if: n \u003e 0 then: {\n          self traceDepth: n - 1 turn: \"R\"\n          write: turn\n          self traceDepth: n - 1 turn: \"L\"\n        }\n      }\n    ]\n\n    // now lets try it\n    dragon trace: 5\n\n\nGetting Started\n---------------\n\nFinch lives on github here: https://github.com/munificent/finch\n\nTo play around with it, sync it down. Finch uses GYP to generate projects or\nmakefiles for your platform, which you then build to get an executable.\n\n1. Download GYP from: http://code.google.com/p/gyp/\n2. Clone the finch repo from github.\n3. In a terminal/command prompt, navigate to the root finch/ directory.\n4. Run GYP on this file: `\u003cpath to gyp\u003e/gyp --depth=1`\n   Where `\u003cpath to gyp\u003e` is wherever you downloaded GYP to in step 1.\n   This should spit out a project/makefile in the root directory for your\n   platform.\n5. Open that project in XCode or VS and build, or build the makefile.\n6. Ta-da! You should now have a Finch executable under a build/ directory.\n\nLet me know if you run into any problems.\n\n\nRunning Finch\n-------------\n\nOnce you've got it built and running, you'll be at the main\ninterpreter prompt. Finch is a command-line app. If you run it without\nany arguments, it drops you into a REPL, an interactive session. You\ncan type in chunks of code and it will interpret them immediately. (If\nyou run it with a single argument, it expects that to be a path to a\n.fin script, and it will load and run that script.)\n\nOnce you're in the REPL, you can load and execute a script using\nload:. The path must be relative to where the executable is right now (lame!).\nYou can run the tests like this:\n\n    \u003e\u003e load: \"../../test/test.fin\"\n\n\nWhere to Go from Here\n---------------------\n\nYou should be good to start hacking some Finch code now. There is some\ndocumentation here:\n\n* http://finch.stuffwithstuff.com\n* http://journal.stuffwithstuff.com/category/finch/\n\nIf you have any questions or comments, holler at me.","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmunificent%2Ffinch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmunificent%2Ffinch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmunificent%2Ffinch/lists"}