What Is The Most Valuable Programming Language To Know For The Future And Why?

I just have read an very interesting Q&A on http://www.Quora.com:

To quote William Ting‘s earlier answer: “JavaScript will stay relevant as long as people use the internet.”

1. So, JavaScript will be relevant forever.


2. JavaScript runs in other environments, outside of browsers, and can be compiled from a wide array of programming languages.

With the maturity and robustness of mobile frameworks like PhoneGap and end-to-end implementations like Node, JavaScript will be used more and more often, in more and more contexts.

So, my vote is—wait for it—JavaScript.

Not convinced?

JavaScript is the #1 most-used language on GitHub, and this trend is only going to increase:

– via @dberkholz on Twitter

Khan Academy teaches their Computer Science courses in JavaScript.

Stanford’s Computer Science 101 is taught using JavaScript.

Windows 8 treats JavaScript as a 1st-class citizenas does OSX Yosemite.

Entire Web browsers are being written in JS, and there is an implementation of git being built entirely with it.

GitHub’s Atom editor is built almost entirely around CoffeeScript, which compiles to JS.

You can even program hardware in JavaScript, including PLAYING DVDs.

Almost every public REST API returns JSON (JavaScript Object Notation) as their primary data format, and has done so for several years.

And let’s not forget the demand of JavaScript in the job market (HTML5 is #1):


Simply put, more people are willing to pay money for JavaScript devs than any other platform or language right now. That is the very definition of the word “valuable”.

It seems that the enterprise agrees:


“Treat JavaScript experience and expertise as a basic requirement for most developers.” – @Gartner_inc Predicts 2014 App Development – Via Adobe’s Brian LeRoux on Twitter





Gartner predicts that through 2014, improved JavaScript performance will begin to push HTML5 and the browser as a mainstream enterprise application development environment.”

It’s hard to argue that any other language is more valuable for now, or for the future.

Answer by Boz Bundalo, CTO and Venture Partner at Venture51, onQuora

I will disagree with the whole Javascript thing and I’ll tell you why.

While Javascript might “exist” as long as web exists, the web/browser is dying. The next generation and revolution we are witnessing is the Internet of Things and interconnectivity of the devices (namely Android but as well as iOS and possibly Windows type of OS for mobile/devices – but that’s yet to be seen).

While Javascript is useful to know, the web stack will be more and more used for the back-end RESTful type of web services and less for front-facing web and this is where knowing Python/Django, Ruby/Rails and even PHP/Laravel will come more in handy as they are perfectly positioned for RESTful web services.

The latest numbers show that consumers/mainstream audience uses more and more native applications and less web based apps.

Javascript is a relic that has changed somewhat but not enough in since 1999. It still has the same problems it had 15 years ago. It’s not efficient, even though the Javascript engines have progressed (looking at V8, SpiderMonkey, Nitro etc), it’s just behind.

This is the reason why Google came out with Dart and tried to offer alternatives to Javascript, why Microsoft introduced Typescript etc. …  Not to mention that if you saw Google IO 2014, you can see that Google is clearly shifting Chromebooks to run native Android applications and is a signal that they might be moving away from the web app approach.

Javascript landscape is a wild, wild west. The way one person writes it differs from another, especially when you account gazillion frameworks that are trying to solve some kind of inefficiency with DOM/JS approach and overall issues.

But let’s talk about languages. Java has a new revolution. Why? Because it is a solid language that covers a lot of things and has HUGE backing and support from the community and is incredibly mature. You can build back-end services, you can build native Android applications, you will be building applications for cars, for TVs, etc.. and you will be doing it natively with the APIs from new devices.

There is a reason why many big companies have started with other languages and back-end architecture and they eventually went back to Java.

Granted, Java is not perfect, but if you acknowledge that Android rules the world and the new devices and services come out, you will have far more work and opportunities with it.  I would say a lot of people who have issues with some things Java, will tell you that Scala is better and I think Scala is pretty great. Twitter uses it.

I think knowing Java will also allow you to jump to other similar languages. Today, we see that Apple is moving to Swift, C# is very popular with Xamarin that allows you to build real native applications with it, and they are all very similar as they come from a C family.

I think a lot of people need to ask themselves whether or not they think Web apps will stay relevant or the native type applications with direct connection to hardware APIs will be the way forward.





All the statistics and what we are seeing are telling us that we are moving towards the latter.  Native applications with the web services/cloud back-end.

This is only intensifying.

While I agree that you should understand general computer programming principles, design patterns, OOP and data structures, I would tell you that you should learn the following languages for the next 10 years in this order:

1. Java (Java has matured so much and Java has some of the cool stuff like generics, lambda expressions, Improved type inference)


2. Swift


3. C#


4. Javascript (and mainly because of Node and less because of web-app front ends)

Github Javascript measurement is really not a good measurement of popularity.

If you look at job requirements across the world, the demand has skyrocketed for Java (holds number 1 place), Objective-C and Swift now, C#.

As I noted, this is really where technology is going. Javascript and traditional Web in general have really less and less place in that future.

We are moving towards mobile devices, cars with apps, powerful TVs that will add even more functionality, home automation etc etc and this is a world where web as we know it has little place in unless it is a cloud and web services that we use to store/retrieve data.

And if you think about it, we went full circle, from desktop apps without connectivity, to web only approach and now we are coming back to smart devices with desktop/native type applications and we use the web for what it’s really great for, network connectivity and less of front end usage.

In conclusion, if you are going to be taking a language, consider this and go native all the way.

This question originally appeared on QuoraWhat is the most valuable programming language to know for the future and why? More questions:

Continue Reading

"Robot EA nie męczy się nigdy. Rozmowa z Tomaszem Waszczykiem"

Robot EA nie męczy się nigdy

 

Automatyczne systemy transakcyjne powinny być spójne i kompleksowe. W końcu to one podejmują decyzję za inwestora. Jednak przede wszystkim muszą byćperfekcyjnie do niego dostosowane, co podkreśla trader i programista Tomasz Waszczyk.

W jaki sposób zbudować dobry automatyczny system transakcyjny?

Trudno w paru zdaniach zawrzeć przepis na dobry automat transakcyjny. Tym bardziej, że słowo „dobry” dla różnych ludzi może oznaczać zupełnie co innego. Jedna osoba akceptuje wyższy, tzw.drawdown czyli spadek na kapitale od jego szczytu. Natomiast ktoś inny wychodzi z założenia, że automat o wysokim DD nie jest skuteczny. Wracając do pytania, osobiście sądzę, że każdy system transakcyjny powinien pasować do korzystającego z niego inwestora. Niestety nie wszyscy są tego świadomi i próbują dopasować siebie do posiadanego systemu. A to jest błąd.

Na czym polega funkcjonowanie systemu – automatu?

W wielkim skrócie to jest program komputerowy, który w oparciu o zaprogramowane w nim reguły podejmuje decyzje inwestycyjne. Ważne, aby automat był spójny i kompleksowy. Podczas programowania automatu transakcyjnego powinniśmy przewidzieć każdą możliwą dla niego sytuację rynkową. Jest to o tyle istotne, że w przypadku pominięcia chociażby spreadu przy testowaniu automat jest zyskowny, ale w czasie handlu rzeczywistego może już tracić.

Jaka jest przewaga automatycznego systemu nad ręcznym handlem? Oferuje większą skuteczność?

Należy rozróżnić dwie rzeczy: system inwestycyjny oraz automat transakcyjny. System inwestycyjny jest zawarty w automacie transakcyjnym. Chodzi o zestaw reguł, jakim posługuje się przy otwieraniu, prowadzeniu oraz zamykaniu transakcji. Z pewnością jedną z największych zalet handlu automatycznego jest fakt, że robot nigdy się nie męczy. Pracuje nieprzerwanie 24h/dobę. Drugą ogromną zaletą automatów jest szybkość analizy rynku. Robot przeszukuje setki rynków jednocześnie w czasie ułamków sekund. Niestety człowiek nie jest w stanie tego zrobić. Są również roboty, których system inwestycyjny jest oparty na szybkości dostępu do notowań. Jeżeli chcemy wykorzystywać tego typu strategie, jesteśmy zmuszeni do handlu automatycznego. Dobre automaty transakcyjne pozwalają także na bardzo komfortowe od strony psychologicznej zarabianie, ponieważ oferują względnie wygładzoną krzywą kapitału.

Roboty EA są dedykowane początkującym czy zaawansowanym inwestorom?

Z własnego doświadczenia mogę powiedzieć, że handlowanie automatycznymi strategiami transakcyjnymi jest przeznaczone dla osób, które nie działają na rynku od wczoraj. Wynika to z kilku czynników. Jednym z nich jest fakt, że do napisania expert advisor, który zarabia, jest potrzebne doświadczenie rynkowe inwestora, zdobyte dzięki handlowi ręcznemu. Chciałbym zwrócić uwagę na to, że w Polsce jedynie ok. 4 proc. obrotu jest wykonywane za pomocą handlu automatycznego.

Czy początkujący inwestor może sam zbudować robota?

Napisanie robota wiąże się z dwoma podstawowymi problemami. Po pierwsze: jakie reguły wybrać, żeby system zarabiał? Po drugie: zakładając, że pierwszy warunek został spełniony, musimy bardzo dokładnie tę wiedzę przekuć na kod źródłowy rozumiany przez komputer. O ile początkujący inwestor może zlecić programiście wszystkie problemy techniczne związane z programowaniem, o tyle programista potrzebuje informacji, w jaki sposób ma programować. Osoba z małym doświadczeniem w handlu ręcznym nie jest w stanie przekazać programiście żadnego sensownego zestawu reguł, który później ma przynosić zysk. Wielu ludziom wydaje się, że kupi sobie robota za kilkaset dolarów i już do końca życia nie musi nic robić. Z przykrością stwierdzam, że to wyobrażenie jest oderwane od rzeczywistości. Prawda jest taka, że robota należy kontrolować. Zmieniać parametry tak, aby przystosowywał się do szybko zmieniających się realiów. To może być bardzo trudne dla początkującego inwestora.

Trzeba znać język programowania, aby stworzyć EA?

Tak, zdecydowanie tak. Ja miałem trochę łatwiej, ponieważ studiowałem informatykę. Kontakt z kodem źródłowym miałem praktycznie przez cały okres studiów. Mimo to nie należy zakładać, że programista ma dużo łatwiej przy tworzeniu EA. Niejeden broker pozwala swoim klientom na programowanie robotów w języku JAVA, którego nie miałem na studiach. Uważam to za porażkę polskiego szkolnictwa wyższego. Bardzo dużo musiałem nauczyć się sam bądź od bardziej doświadczonych ode mnie znajomych. Prawda jest taka, że nieustannie należy rozwijać się i dokształcać, żeby móc dopasowywać się do ciągle zmieniającego się rynku. Być na bieżąco z nowinkami technicznymi, które czasami są bardzo przydatne i pozwalają zaoszczędzić czas. Chciałbym jeszcze uczulić na kupowanie black box. Nie wiemy jak działa, nie rozumiemy, co w nim jest, a chcemy, żeby zarabiał. Ja nie wierzę, że można zarabiać w ten sposób. Niestety firm i osób sprzedających takie systemy jest mnóstwo, co powinno być tak samo karane, jak kradzież w sklepie.

Automaty sprawdzają się lepiej w inwestowaniu długoterminowym czy daytradingu?

Wszystko zależy od tego, czy wiemy, co tak naprawdę robimy. Zanim zaczniemy programować automatyczną strategię inwestycyjną, musimy zastanowić się nad wieloma rzeczami. Jedną z takich rzeczy jest horyzont inwestycyjny. Czy automat będzie zestawem reguł zaimplementowanych dla trendów czy dla okresów konsolidacji? Ewentualnie wybicia z konsolidacji, którą możemy mierzyć na prostym wskaźniku ATR. Wskaźnik określa zmienność, na podstawie której możemy podejmować dalsze decyzje inwestycyjne.

Jaki jest stosunek brokerów do automatycznych systemów? Szczególnie przy zyskownych transakcjach?

Aby odpowiedzieć na to pytanie, warto zastanowić się, co robi robot transakcyjny z punktu widzenia brokera lub innego pośrednika. Patrząc na zagadnienie z tej perspektywy, zlecenie wykonane za pomocą robota niczym nie różni się od zrealizowanego ręcznie przez inwestora. Brokerzy działający w modelu market maker zarabiają na spreadzie. W przypadku brokerów działających w modelu ECN, my ponosimy koszt prowizji. Zatem widzimy, że dla brokerów jest to zupełnie obojętne. Chciałbym jednak zwrócić uwagę na jedną dość istotną sprawę. Niektóre roboty generują bardzo dużą liczbę transakcji wysyłanych do serwera brokera. Nawet nie muszą to być zlecenia wysyłane na rynek czyli on the market, a – co zdarza się dużo częściej – zlecenia oczekujące. Zdarza się, że liczba tych zleceń jest tak duża, że dostajemy maila z informacją, aby przestać obciążać serwer. Jeżeli tego nie zrobimy, broker zmniejszy nam limit wykonanych transakcji do np. jednej transakcji w czasie trzech sekund.

U wszystkich brokerów jest możliwy handel przy pomocy EA?

Zdecydowana większość brokerów posiada platformę pozwalającą na handel automatyczny. Aczkolwiek są brokerzy, którzy ograniczyli tą możliwość. Zwykle brokerzy udostępniają bardzo popularną platformę transakcyjną Meta Trader 4/5 pozwalającą handlować za pomocą EA. Obecnie często słyszymy o nowych brokerach, wzrasta konkurencja. To z kolei implikuje, że firmy muszą dostosowywać się do szybko zmieniającej się rzeczywistości i walczyć o klienta. Znam takie, które przyciągają klientów nie tylko udostępnieniem handlu automatycznego, ale także możliwością skorzystania z usług programistów, którzy pomagają w tworzeniu robotów.

Korzysta Pan z takich robotów czy raczej otwieranie i zamykanie zleceń opiera na innej strategii?

Kiedy zaczynałem eksperymenty z handlem automatycznym, było możliwe zarabianie stosunkowo małej ilości pipsów, ale z podwyższonym prawdopodobieństwem trafności transakcji. Polegało to na zaprogramowaniu dwóch wzajemnie komunikujących się robotów, które wyszukiwały nieefektywności na rynku i wykorzystywały je, dokonując arbitrażu. Niestety rozwój technologii przyczynił się do zaniku tych nieefektywności, przez co metoda stała się mniej użyteczna z punktu widzenia inwestora indywidualnego. Aktualnie wykorzystuję EA do prowadzenia transakcji, automatycznych zmian poziomów stop loss, wyszukiwania tych zależności na rynku, których znalezienie przez fizyczną osobę pochłania sporo czasu. Pracuję nad aplikacją, która będzie zarządzać kilkoma współbieżnie działającymi EA w celu wygenerowania jak najbardziej zadowalającego zwrotu z kapitału.

 

Postanowiłem przekleić swój wywiad dla akademiaforex.com, gdzie oryginał znajduje się pod następującym adresem: http://akademiaforex.com/robot-ea-nie-meczy-sie-nigdy-rozmowa-z-tomaszem-waszczykiem/ 

Continue Reading

Programming of Conwey Game

 

I want to show some interesting quite simple application coded in Swing. Here you can see the result:

 

 

Source code you can find here: https://github.com/TomaszWaszczyk/Conwey ,the application shows how small change in the system can have a big influence on the future. 

More reference: https://en.wikipedia.org/wiki/Conway's_Game_of_Life or https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens (in German)

 

I want to also recommend some great application for making gif files: http://www.cockos.com/licecap/

Continue Reading

Fast import of all plugins to new instance of Eclipse

Start fresh and install plugins from an old install
The idea here is that you want to keep your old install intact, download a new indigo package (http://download.eclipse.org/) and just adds the existing plugins to your install. With Indigo this is now made super easy!
Step 1: Download and unzip your Indigo install: http://download.eclipse.org
Step 2: Import your plug-ins from your previous install by doing File > Import > Install > From existing install, pick your old install, select the plug-ins and there you go! You can chose to go piece meal, or chose to pick several entries, in any event dependency analysis will be performed to check the validity of the install.
Step 3: Click next a couple times and patiently wait for the bytes to download to your machine. Then restart and enjoy!

Continue Reading