AN EMBEDDABLE HTML5 EDITOR FOR S-EXPRESSIONS

Κλειστό Αναρτήθηκε May 20, 2014 Πληρώθηκε κατά την παράδοση
Κλειστό Πληρώθηκε κατά την παράδοση

JOB #1: A MULTI-BACKEND COMPILER FOR A FUNCTIONAL PROGRAMMING LANGUAGE

A compiler for a functional programming language. That language consists of the Simply Typed Lambda Calculus extended with recursion and algebraic datatypes, and is very similar to System F. You will be given the complete language specification, including typing rules and operational semantics. Your job is to create a compiler for the following backends: JavaScript, LLVM, Java, ObjectiveC and Python. Those backends will be used to export programs written in that language to native applications of common operating systems: Windows, Linux, OSX, Android, iOS and the web (Chrome, Firefox, Safari).

As the language consists only of pure, side-effects-free functions, you don't have to worry about IO, threading, system calls etc. The resulting code must compete with hand-written code in the target language in aspects of performance and code size, so it is acceptable to sacrifice operational semantics in favor of faster representations. In other words, instead of porting a runtime, it is preferred to write direct translations, even though they'd disrespect some semantics. For example, the following program, in a Lambda Calculus-like language:

(λx . λy . (sqrt (+ (* x x) (* y y))))

could be compiled to

function(x,y){

return [url removed, login to view](x*x + y*y);

}

or something equivalent, in JavaScript, and the program

(λf . λa . map (λx. f (f x)) a)

could be compiled to

function(f){

return function(a){

var result = [];

for (var i=0,l=[url removed, login to view]; i<x; ++i)

result[i] = f(f(x[i]));

return result;

}

}

even though those are not strictly equivalent to the original programs, due to the approximations such as usage of floats to represent numbers, dynamic arrays to represent lists and functional uncurrying. That is, as long as those approximations result in better performances on the target language, are consistent and predictable (for example, if you are going to uncurry functions, do it in them all), do not differ too much with the original semantics and are properly documented, then you are free to apply them.

We will provide you access to a test machine with a few sample programs and benchmarking/testing scripts. Your implementation will be considered satisfactory as soon as it passes all tests and conforms to performance expectations. We have implemented a prototype of the compiler in JavaScript, which already does those. You will have access to that prototype.

You are free to propose changes in the core language, as long as you justify why you think those will provide better results overall, without sacrificing functionality. You are also free to use any technologies/programming languages you like, as well as reusing existing technologies, as long as the compiler conforms specifications and runs sufficiently fast on the test machine.

The payment can be done via paypal, bank transfer or bitcoins (preferred). Feel free to contact me for more information. Please submit your proposal together with an official note of an approximated cost, as well as examples of previous works on the area.

HTML HTML5 JavaScript Διεπαφή Χρήστη / Αρχιτεκτονική Πληροφορικής

Ταυτότητα Εργασίας: #5965557

Σχετικά με την εργασία

17 προτάσεις Απομακρυσμένη εργασία Ενεργό Jun 26, 2014

17 freelancers κάνουν προσφορές κατά μέσο όρο $6064 για αυτή τη δουλειά

techwelf

hi we could do it perfectly with accuracy, please let us know if you want any clarification. if you want us to share our skill and previous work please initiate the chat..

$5263 USD σε 55 μέρες
(15 Αξιολογήσεις)
4.7
flyonitOZ

A proposal has not yet been provided

$5263 USD σε 30 μέρες
(5 Αξιολογήσεις)
4.4
wentie425

A proposal has not yet been provided

$5555 USD σε 30 μέρες
(7 Αξιολογήσεις)
3.4
vinothmrdt88

Hi I have 4 years experience in php and mysql, c, c++, drupal, system admin etc.. Skype id : karthick_sivaraj

$5000 USD σε 10 μέρες
(0 Αξιολογήσεις)
0.0
sojib445566

A proposal has not yet been provided

$5555 USD σε 30 μέρες
(0 Αξιολογήσεις)
0.0
salestechconsult

Hello there, I hope you are doing great. I have just read your mentioned requirement and would like to discuss it in detail. I just need to your some time to get the better clarity. If you don't mind then can Περισσότερα

$7216 USD σε 60 μέρες
(0 Αξιολογήσεις)
0.0
FredOoo

I'm a web application development experts using Python, PHP, javascript... I already made C++ application for a neural network project. I know much more computer languages than specified above and have always been in Περισσότερα

$6920 USD σε 0 μέρες
(0 Αξιολογήσεις)
0.0
krishnainusa

I am working for a top notch client in USA as a lead for a team of 18 members who are working on multiple projects. I have done many projects from inception to completion and to be frank I haven't failed till today eit Περισσότερα

$5555 USD σε 30 μέρες
(0 Αξιολογήσεις)
0.0