-- Developers and hobbiests all over the globe enjoy programming in a very diverse set of languages. While this diversity encourages a wide range of specialty skillsets, one of the largest issues plaguing the collaboration of programmers is the inability to easily translate code from one language to another. Our project, Transc<>de, attempts to mitigate this issue by supporting the translation of many primary features of today's top languages.
-- Transc<>de supports a number of key use cases aimed at improving the understanding and learning process for all individuals interested in language translation:
- Clean and simple interface for developers to view their own code displayed in languages they may not be proficient in
- Convenient tool for viewing StackOverflow solutions to issues written in a language different from the desired output
- Demonstrates the semantics specific to each language
- The grammars for each language we support are unique, requiring our team to handle the very tedious task of converting to a language-agnostic form in order to be able to translate operation functionality.
- For Typescript and Python, variables are not required to have type declaration. Java, on the other hard, requires type declarations on variables. Our team was faced with the challenge of writing a basic type inference system in order to appropriately handle this translation case.
- Becomeing familiar with the ANTLR framework
What We Learned
- Proper language interpretation functionality perfromed by the compiler
- ANTLR Framework structure and implementation
- How languages are represented, and how these representations relate to a given parse tree
- Our primary vision for the usefulness of this tool would be extended with the construction of a Chrome Extension aimed at converting StackOverflow code into your current language directly in-browser
- A second interesting use case would come in the form of constructing a command-line interface tool which allows developers in larger tech stacks to convert between frontend and backend code seamlessly.
- A third performance-focused enhancement we would like to implement focuses on assisting developers with optimization within a language's best practices. Developers would learn the best way to construct idiomatic and performant code while following proper standards of development. For example, in the conversion between a "for" loop in Python into "for of" instead of the slower "for each" loop.