Mijn 'eerste' programmeertaal was Javascript en nog steeds vind ik de syntax en mogelijkheden van de taal erg mooi. Onlangs moest ik weer eens wat met JS doen en toen begon het idee dat het in C++ ( mijn 'huidige' taal ) mogelijk moest zijn om veel van JS te simuleren.
Nu begrijp ik dat dit niet echt een praktisch nut heeft, maar om iets dergelijks op te zetten dwingt je creatief te kijken naar een taal en levert vaak inzichten op die je anders nooit zou krijgen. Vandaar dat ik aan het stoeien was geslagen om te proberen JS in C++ te implementeren.
Nu heb ik een groot deel werkend, maar met name de function pointers die in JS goddelijk eenvoudig zijn krijg ik nog niet geïmplementeerd. Hierover zou ik graag met jullie discussiëren.
Ik heb het volgende bijvoorbeeld werkend:
Dit heeft als output:
Voor diegene die niet met JS bekend zijn, het volgende is mogelijk in JS:
Graag zou ik zien hoe dicht ik hierbij in de buurt kan komen.
Ik kwam zelf niet verder dan het volgende:
Dat zou je met wat preprocessor magic nog iets mooier kunnen maken, maar echte prijzen win je er natuurlijk niet mee... Daarnaast zitten er ook behoorlijke lastigheden aan vast wanneer je met verschillende parameters gaat werken.
Nu weet ik dat er hier genoeg mensen rondlopen die de mooiste dingen kunnen bedenken in C++, dus ik hoop dat hier een leuke oplossing uit voorkomt
Nu begrijp ik dat dit niet echt een praktisch nut heeft, maar om iets dergelijks op te zetten dwingt je creatief te kijken naar een taal en levert vaak inzichten op die je anders nooit zou krijgen. Vandaar dat ik aan het stoeien was geslagen om te proberen JS in C++ te implementeren.
Nu heb ik een groot deel werkend, maar met name de function pointers die in JS goddelijk eenvoudig zijn krijg ik nog niet geïmplementeerd. Hierover zou ik graag met jullie discussiëren.
Ik heb het volgende bijvoorbeeld werkend:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| struct Document { void write( const Undefined &object ) { std::cout << object << std::endl; } } document; int main( int argc, char **argv ) { var aap; document.write( aap ); aap = 2; document.write( aap ); aap = 3; document.write( aap ); aap = "apen"; document.write( aap ); var beer = null; document.write( 3 + 2 + aap + 2e-3 + beer ); var a; var b = null; var c = Object(); var d = String(); var e = Array(); var f = Date(); document.write( a ); document.write( b ); document.write( c ); document.write( d ); document.write( e ); document.write( f ); for ( var i = 0; i <= 5; ++i ) { document.write( "The number is " + i ); } return 0; } |
Dit heeft als output:
undefined 2 3 apen 5apen0.002null undefined null [object Object] [nog niet geimplementeerd] [nog niet geimplementeerd] The number is 0 The number is 1 The number is 2 The number is 3 The number is 4 The number is 5
Voor diegene die niet met JS bekend zijn, het volgende is mogelijk in JS:
JavaScript:
1
2
3
4
5
| var a = function() { alert( this ); } a(); |
Graag zou ik zien hoe dicht ik hierbij in de buurt kan komen.
Ik kwam zelf niet verder dan het volgende:
C++:
1
2
3
4
5
6
7
8
| struct Function : public Undefined { Undefined operator()() { alert( this ); return 0; } }; var a = Function(); a(); |
Dat zou je met wat preprocessor magic nog iets mooier kunnen maken, maar echte prijzen win je er natuurlijk niet mee... Daarnaast zitten er ook behoorlijke lastigheden aan vast wanneer je met verschillende parameters gaat werken.
Nu weet ik dat er hier genoeg mensen rondlopen die de mooiste dingen kunnen bedenken in C++, dus ik hoop dat hier een leuke oplossing uit voorkomt
oprecht vertrouwen wordt nooit geschaad