Minikomputer micro:bit będzie obsługiwał język MicroPythona

Minikomputer micro:bit będzie obsługiwał język MicroPythona

przez -
15 1535
Sprzęt
Od kilku miesięcy brytyjska telewizja BBC realizuje projekt micro:bit, który jest częścią akcji Make It Digital. Ma ona ma zachęcić młode pokolenie do wyrażania kreatywności w kodowaniu, programowaniu i cyfrowej technologii, a także zniwelować niedobór programistów, który w ciągu ostatnich kilku lat jest poważnym problemem w Wielkiej Brytanii. Od jakiegoś czasu jest wiadome, że w akcję włączył się sam Microsoft i przygotował TouchDevelop do działania z miniaturowym komputerem. Środowisko programistyczne działa w przeglądarce internetowej, gdzie po kliknięci przycisku Wyślij generowany jest plik JSON oparty na AST, który zostaje przekształcony w kod C++ i wysłany na serwer chmurowy ARM mBed do kompilacji.

Z tego powstaje plik hex, który jest przesyłany z powrotem do przeglądarki użytkownika i pobierany lokalnie na dysk. Następnie po wykryciu połączenia USB z komputerem micro:bit, następuje załadowanie pliku i jego uruchomienie.

BBC jednak nie chce się uzależniać od jednego języka i zwróciło się z pomocą do programisty Nicholasa Tollerveya o zaimplementowanie obsługi Pythona w płytce. Z początku sceptyczny deweloper, skontaktował się z autorem MicroPythonaDamien George oraz innym programistą – Jonathanem Austinem i poprosił ich o pomoc. W ciągu tygodnia udało się stworzyć pierwszą działającą wersję, która potrafi mrugać diodami.

Rozpoczęto także prace nad integracją w projekcie TouchDevelop. Programiści napisali wstępny edytor webowy, opartym na kodzie Ace i dodali jako instancję testową. Póki co trwają testy, ale wszystko działa dobrze.

Nie zapomnijmy o zaletach MicroPythona, jak choćby brak kompilacji. Dzięki temu cały kod jest wykonywany lokalnie na komputerze i nie potrzeba do tego celu posiadać internetu. Edytor przekształca wszystko w plik hex i wrzuca na urządzenie, które po wykryciu wbudowanego Pythona, uruchamia kod.

Jako ciekawostkę, można wspomnieć o tym, że odłączona przez USB płytka będzie widoczna w systemie także jako port COM. Możliwe zatem będzie testowanie kodu na żywo w interaktywnej konsoli.

Podobne artykuły

  • gosc

    Komputer o sprzęcie kilkaset razy szybszym od BBC Micro, z oprogramowaniem kilka razy wolniejszym od BBC Micro. Cóż za postęp! Nie lepiej uczyć od podstaw?
    Aha, wtedy okazałoby się, że nie da się uzależnić klientów od jednej marki.

    Jak widzę studenta 2. roku informatyki, który nie odróżnia stosu od kolejki, nie wie co to są rejestry procesora, ani nie jest w stanie wytłumaczyć zasady działania wskaźnika, to mnie szlag trafia. Ta sama osoba programuje serwis w JS. Kod na jego (zakupionym przez rodziców) ośmiordzeniowcu wykonuje się średnio szybko. Wejdźmy na typowym komputerze – po pewnym czasie trzeba przeglądarkę killować.
    Tego nie wolno powielać w świecie open source! A w ostatnich 20 latach to właśnie się dzieje.

    • Kamil Koczurek

      W ciągu ostatnich lat dziadostwo powiela się wszędzie, rzygać się chce na widok tych pseudo-informatyków. Coraz więcej nierobów, którzy myślą że siedzą dużo na PC to będą dobrymi programistami/informatykami. Czasami mam chęć porzucić rozwój w kierunku medycyny i pójść na informatykę, tylko po to, żeby pokazać jak to się powinno robić.

    • Roman syn Ryżu

      Osłabia mnie wasza frustracja.
      Ciekawe co wasi przodkowie mówili na BASIC?

    • Kamil Koczurek

      Ja tam o językach programowania nic nie mówiłem, narzekam tylko na to, jacy ludzie uważają się za predysponowanych do pełnienia zawodu informatyka/programisty, nic więcej.

    • gosc

      BASIC na mikrokomputery to był świetny język, w pewnym momencie adept programowania napotykał po prostu ścianę. Wiedział już co nieco o działaniu komputera (głównie dwie podstawowe instrukcje od pamięci*). Gdy zatrzymał się na odpowiedniej ilości ścian, jego wiedza o komputerze była wystarczająca by zacząć uczyć się assemblera. Powoli program Basic’owy odwoływał się do dodatkowych procedur w kodzie, by w kolejnych wersjach skończyć jako niskopoziomowy. Każdy komputer z BASICiem miał możliwość odpalenia monitora do nauki oraz były gotowe środowiska do programowania na niskim poziomie. Tylko trzeba sobie było reset bliżej klawiatury przyciągnąć :).
      Coś o tym wiem, bo sam tak się tego uczyłem, i to nie 30 lat temu – wybrałem lepszą metodę, a sprzęt miałem starszy.
      Dzisiaj utrudnia się takie rzeczy, a optymalizacja na niskim poziomie w środowiskach OS uchodzi za niestosowność podobną, jak tworzenie narzędzi WYSIWYG (by nie zabierać pracy geekom).

      * Ze względu na potencjalnych maniaków HP, nie piszę jakie to były instrukcje. Wszyscy inni: Peek, Poke.

    • Roman syn Ryżu

      Ja też się uczyłem na Atari BASIC-a. Jak przestał wystarczać i znalazłem opis kodu maszynowego to pisałem w nim. Był jeszcze Action! do zabawy.

      Dziś na kompach jest Python. A jak nie wystarczy to jest C++, które można całkiem nieźle optymalizować. Każda platforma ma darmowe IDE z debugerem.

      Co do narzekaczy, to większość dzisiejszych dynamicznych języków ma wystarczającą wydajność. Kiedyś napisałem w Pythonie GPS do roweru na Maemo i nie miało to wielkiego wpływu na baterię. Wyciągał 6h działania z włączonym wyświetlaczem. A to były czasy ARMv6 z 400MHz i 128 MB RAM. Czyli gorzej niż Raspberry Pi.

    • gosc

      Miałem znowu odwrotną sytuację. System wbudowany przetwarzał obrazy. Procesor zgodny x86 niby jest, ale wydajność słaba, i dodatkowo mało pamięci, którą zjada Linux. Jeden obraz mielił się ok. 10 minut. Okazało się, że programy do manipulacji obrazami są napisane w bardzo nieładny sposób. Obrazy rozmiarów 30MB były ładowane do pamięci, dekompresowane do kopii, konwertowane do kolejnej kopii, i kolejna skompresowana kopia była zrzucana na dysk. Na początku optymalizowałem sam kod w C, co zajęło ok. 2 dni (nie jestem jakimś bardzo dobrym programistą C, preferuję C++), czas spadł do nieco ponad 3 minut. Korzystając z możliwości kompresji (oraz długiego weekendu) przepisałem kluczowe procedury na assembler tak, że program zjadał maksymalnie 2MB pamięci i był znacznie szybszy: Czas zmniejszył się do ok. 20 sekund.
      Drugi przykład: Wymagania Haiku i BeOSa. Jądro Haiku jest pisane w C. BeOSa ma duże części w assemblerze (pod PPC jest inne niż x86). BeOS do uruchomienia wymaga dowolnego Pentiuma i 32MB pamięci (używalny przy 48MB). Haiku – Pentiuma III i 256MB. Chodzi mi o to co dzieje się przed Trackerem i nie wymaga bibliotek.
      To więc nie jest tak, że się nie da.

    • Roman syn Ryżu

      Fajna opowieść, dzięki!
      No i masz rację. Twoje zadanie wymagało sporej optymalizacji.

      Co do systemów operacyjnych to podobna historia jest z OpenGL. Do niedawna ludzie mówili, że on tak wygląda, bo tak działa karta graficzna. I że to najlepszy sposób na jej kontrolowanie. Minęło parę lat i mamy Mantle, DX12, Vulkan i Metal.

    • Tomek Primke

      To i ja włączę się do dyskusji starszej kadry (Atari BASIC -> assembler).

      Gościu – masz rację. Oprogramowanie napisane w assemblerze będzie działać wydajniej, niż oprogramowanie napisane w C, C++, czy Pythonie. Jeśli Haiku czy BeOS mają części pisane w assemblerze (nie wiem, nigdy nie sprawdzałem), to nic dziwnego, że mają tak niskie wymagania sprzętowe i tak szybko działają.

      Nie zapominajmy jednak o drugiej stronie tego medalu – ekonomii. Co jest więcej warte: godzina pracy programisty, czy godzina pracy procesora? Godzina pracy programisty, czy 1GB pamięci RAM? Pytania oczywiście retoryczne. My odpowiedź znamy, młodsi niech sami ją znajdą. To jest właśnie powód, dla którego ludzie używają C, C++ czy Pythona, a nie assemblera.

    • Ollbi

      Informatyka jest tak samo rozległa jak medycyna. I nie możesz twierdzić, że osoba bardzo dobrze znająca się dajmy na to na sprzęcie komputerowym i elektronice, będzie także bardzo dobra w programowaniu. Oczywiście wyjątki od tej reguły się zdarzają, ale to tak jakbyś winił dentystę za to, że nie potrafi zoperować serca :-)

    • Kamil Koczurek

      Źle mnie zrozumiałeś, jeżeli ktoś zna się w miarę dobrze na czymkolwiek związanym z informatyką, to niech się rozwija w tym kierunku, nie podoba mi się tylko to, że ktoś nie znający się w ogóle idzie na informatykę bo nie wie co ze sobą zrobić. ;-)

    • Nicram

      Może szlag Cie trafia, ponieważ nie rozumiesz, jak i jakieś 98% osób, które umieszczają komentarze czy treści tutaj czy w innych serwisach poświęconych komputerom, że informatyk nie równa się programista. Informatyka to przetwarzanie informacji w ogóle, a nie kodowanie. Dlatego też, świetny grafik komputerowy, który nie ma pojęcia o kodowaniu jest świetnym wyspecjalizowanym informatykiem. A Ty jedynie ignorantem, nie rozumiejącym pojęć, których używa. Dlatego następnym razem, kiedy szlag Cie będzie trafiał przy studencie informatyki na 2 roku, weź coś ciężkiego, np. patelnię, i uderz sie nią mocno w głowę tak, aby było słychać echo puknięcia.

    • gosc

      Grafik komputerowy MUSI znać podstawy informatyki, jeżeli nie, to wyleci z roboty. Wyleci chociażby za niedotrzymanie terminu, bo nie będzie wiedział dlaczego to co robi tak długo się przetwarza, przecież podgląd 320×240 się robił od razu. Albo za zapchanie klastra do renderowania, bo będąc wyspecjalizowanym informatykiem, a nie programistą, nie używa w swojej grafice 3D procedur.
      Jeżeli chce się jeździć samochodem, naprawdę wypada wiedzieć gdzie jest kierownica. Dobrą umiejętnością jest również nie nalanie paliwa do zbiornika płynu do chłodnicy.

    • Ollbi

      I znów uogólniasz. Bo są graficy 3D i graficy 2D, tudzież zdarzają osoby z obiema zdolnościami. Znam wiele takich osób i we większość Ci od 2D znają obsługę systemu itp., ale np. nie znają się kompletnie na sprzęcie, bo nie śledzą nowinek technologicznych i wtedy proszą o pomoc fachowców od sprzętu.

    • Tomek Primke

      Rozmawiałem ostatnio z osobą, która prowadzi zajęcia z programowania dla studentów drugiego (chyba) roku informatyki. Okazało się, że rozwiązanie równania kwadratowego jest dla nich zbyt trudne. Moje pokolenie takie zadania rozwiązywało w wieku 15-16 lat. Tak więc to nie jest problem znajomości rejestrów procesora.

      Weź to pod uwagę, zanim znowu zaproponujesz komuś operację z patelnią.