Funkcje

To ogólny przegląd funkcji. Żeby zobaczyć wszystko, trzeba przejrzeć spis poleceń.

turtleSpaces opiera się na pełnej implementacji środowiska Apple (LCSI) Logo. O Logo mówiono, że jest „najpotężniejszym i najprzyjaźniejszym dla użytkownika językiem komputerowym, jaki kiedykolwiek zaimplementowano na komputerze osobistym”. (David Thornburg)

Logo jest językiem „funkcyjnym”, opartym na „prymitywach” (poleceniach), które przekazują sobie nawzajem wyniki – można je łączyć w łańcuchy, aby pobierać, obliczać i przekształcać dane na różne sposoby, zanim się je zapisze albo na ich podstawie coś zrobi.

Użytkownicy mogą tworzyć „procedury”, które zachowują się dokładnie tak jak prymitywy (i mogą je zastępować). Procedura może przyjmować parametry i zwracać wynik, zupełnie jak prymityw. Weźmy prymityw product , który mnoży dwie liczby:

W ten sposób faktycznie zastąpiliśmy product własną procedurą.

Logo pomyślano pierwotnie jako językowy plac zabaw dla dzieci. Dlatego bardzo dobrze radzi sobie z napisami i „listami” (zbiorami „elementów”), takimi jak [pig duck cow] czy [[Bob 53][Frank 22][Sue 34]]. Jest wiele prymitywów do budowania, porządkowania i przestawiania list oraz napisów, które w Logo nazywa się „słowami”.

  • Dodaliśmy listy „miękkie”, które są „rozwiązywane” (obliczane) w czasie działania programu. Takie listy otacza się nawiasami klamrowymi zamiast kwadratowych: {xpos ypos zpos} {hours minutes seconds}
  • Dodaliśmy bardziej tradycyjne tablice w postaci tables. Tabele to predefiniowane tablice x y (z). Ich zawartość odczytuje się i ustawia za pomocą cell i putcell.
  • Jest też przechowywanie danych powiązane z położeniem, w postaci zones i sectors.
  • Dane można zapisywać do plików i z nich odczytywać.
  • Tekst można wyświetlać różnymi krojami, w różnych rozmiarach i kolorach.

Żółw trafił do Logo później, ale stał się jego najbardziej rozpoznawalnym elementem. Żółw to graficzny „kursor”, który porusza się względem samego siebie, inaczej niż w „bezwzględnych” systemach graficznych (choć w Logo można też pracować bezwzględnie). Mówisz żółwiowi, żeby się przesunął i obrócił, a on robi to względem swojego położenia i orientacji.

W turtleSpaces znacznie rozbudowaliśmy możliwości żółwi:

  • Żółw może poruszać się w trzech wymiarach. Oznacza to, że oprócz forward , back , left i right są też up , down , rollleft , rollright. Dla wygody dodaliśmy również raise , lower , slideleft i slideright.
  • position zwraca położenie żółwia w trzech współrzędnych, podczas gdy tradycyjny pos zwraca 2 (x, y)
  • Obok heading , setheading dodaliśmy pitch , setpitch oraz roll , setroll
  • orientation , setorientation ustawia wszystkie trzy naraz, zgodnie z setorientationorder , które określa kolejność stosowania trzech parametrów orientacji (heading , pitch i roll) (a niech cię, Eulerze!)
  • Dla pewniejszej orientacji można użyć vectors , setvectors – mamy też cały zestaw prymitywów związanych z wektorami.
  • Można ustawić punkt zaczepienia orbity anchorpoint , a potem orbit ować wokół niego, podając stopnie. To niesamowicie przydatne przy kamerach i przy rysowaniu ciekawych wzorów.
  • Można tworzyć nowe żółwie: „trwałe” za pomocą prymitywu newturtle albo ulotne za pomocą hatch , których wynik da się merge ować z rodzicem**.** Wzajemne położenie żółwi sprawdzisz między innymi przez near , inside ,facingp , location.
  • „Model” żółwia można ustawić na dowolny rysujący kod Logo za pomocą tags , które pozwalają „obejmować” fragmenty „śladu” żółwia (jego wyjścia graficznego) i używać ich jako modeli albo włączać i wyłączać. Ślady można też kopiować, wczytywać i zapisywać. Przed modelami można wstawiać dowolne polecenia za pomocą setpremodel , co pozwala w razie potrzeby zmienić orientację modelu.
  • Ostatnią rzecz, którą zrobił żółw, cofniesz przez backtrack , a ze śladu żółwia zrobisz procedurę przez assemble , co pozwala tworzyć modele „w locie”.

Żółwie mogą zajmować wiele space ów i mogą być rozmieszczone w różnych przestrzeniach (newspace selectspace). Każda przestrzeń to nieskończone trójwymiarowe płótno.

Każdy żółw może być kamerą – wybiera się go przez setview. Położenie kamery względem jej żółwia zmienisz przez setviewpoint. Żółwie działają też jako światła: mogą być reflektorem, światłem punktowym albo nie świecić wcale.

Procedury i zmienne (containers), a także szereg ustawień, są przypisane do konkretnego żółwia. Kontenery można share ować między żółwiami, a procedury udostępniać przez specjalnego żółwia libby (bibliotekę).

Żółwie są „prowadzone” przez workers , czyli wątki procesów. Jeden worker może prowadzić wiele żółwi (po kolei) albo wiele workerów może prowadzić wiele żółwi. Wiele workerów może nawet (próbować) prowadzić tego samego żółwia! Workery i żółwie to nie to samo. Pomyśl o żółwiach jak o samochodach, a o workerach jak o kierowcach.

Do turtleSpaces można połączyć się przez telnet i sterować workerem z terminala albo z innej aplikacji (API).

Tradycyjne żółwie Logo potrafią tylko rysować linie albo wypełniać obszary, ale ponieważ turtleSpaces opiera się na OpenGL, mamy do dyspozycji wiele innych shapes , które można tworzyć, w tym:

  • shard
  • pinshard
  • voxel
  • voxeloid
  • ramp
  • tent
  • sphere
  • sphereslice
  • cutsphere
  • cutsphereslice
  • spheroid
  • spheroidslice
  • cutspheroid
  • cutspheroidslice
  • icosphere
  • icospheroid
  • amigaball
  • amigaballoid
  • cylinder
  • cylinderslice
  • cylinderarc
  • cylinderarcslice
  • cylindroid
  • cylindroidslice
  • cylindroidarc
  • cylindroidarcslice
  • duocylindrdoid
  • tube
  • tubearc
  • tubeslice
  • tubearcslice
  • tuboid
  • tuboidarc
  • tuboidslice
  • tuboidarcslice
  • duotuboid
  • cone
  • coneslice
  • cutcone
  • cutconeslice
  • conoid
  • conoidslice
  • cutconoid
  • cutconoidslice
  • duocutconoid
  • funnel
  • funnelslice
  • cutfunnel
  • cutfunnelslice
  • cutfunneloidslice
  • funneloid
  • funneloidslice
  • cutfunneloid
  • duocutfunneloid
  • pyramid
  • pyramoid
  • dome
  • domoid
  • torus
  • torusslice
  • toroid
  • toroidslice
  • tetrahedron
  • tetrahedroid
  • octahedron
  • octahedroid
  • dodecahedron
  • dodecahedroid
  • mark
  • inscribe
  • typeset

Voxele i quady można speckle ować (czyli pikselizować w stylu Minecrafta). Można tworzyć rysunki pikselowe (zarówno dwu-, jak i trójwymiarowe) i używać ich jako speck

Wśród prymitywów dźwiękowych są tradycyjny toot (tone), noise (generujący biały szum), playnotes , a muzykę stworzoną we wbudowanym tracker ze odtworzysz przez playmusic. Możesz też skorzystać z syntezatora mowy swojego systemu operacyjnego przez say (macOS i Linux)

turtleSpace ma użytkowników. Aby korzystać z turtleSpaces, „logujesz się” jako użytkownik.

Przestrzenie robocze użytkowników zapisywane są jako foldery „turtleSpace” (TSP). Foldery te zapisują każdą zmianę wprowadzoną w procedurach i pozwalają wrócić do dowolnego etapu pracy (undo , redo). To, co wpisujesz w wierszu poleceń, również jest zapisywane.

Migawki powstają przy save albo takesnapshot – punkt zapisu to stan, do którego przywracana jest przestrzeń robocza przy wczytywaniu. Możesz jednak pracować dalej i wrócić do stanu „bieżącego” przez load autosave. Trwałą „okładkę” (używaną w cat alogu) utworzysz przez takecover

Wiersz poleceń ma historię, którą można odczytywać programowo (historycount historyitem historylist).

Powitalna wycieczka

Gdy pierwszy raz otworzysz IDE, żółwica Shelly oprowadzi cię po nim: pasek menu, przestrzeń robocza, przyciski uruchamiania, konsola, widok 3D i Przykłady. Trwa to około minuty, a Shelly może czytać na głos. Aby obejrzeć ją ponownie, wybierz Pomoc → Powitanie. Tę samą wycieczkę możesz też przeczytać na stronie.

Shelly, pomocniczka od błędów

Gdy program zatrzyma się z błędem, Shelly się pojawia i proponuje, że Claude go wyjaśni. Co to znaczy? wyjaśnia błąd ogólnie. Wyjaśnij to w moim kodzie wyjaśnia, co poszło nie tak w twoim programie. Spróbuj literówki:

Pomoc Shelly przy błędach pojawia się, gdy jesteś zalogowany.

Zapytaj Claude’a

Po zalogowaniu edytor ma kartę Claude, asystenta kodu AI, w której możesz zadawać pytania o Logo i o swój program. Okrągły przycisk Claude w prawym górnym rogu edytora tekstu i obszaru Bloków daje trzy możliwości: Comment procedure dodaje komentarze do procedury, Explain with Claude wyjaśnia procedurę albo cały program prostymi słowami, a Teach Me How zamienia go w Turtorial.

Odpowiedzi AI mogą być błędne, więc je sprawdzaj. Co jest wysyłane, opisuje sekcja AI features w Polityce prywatności.

Turtorial

Turtorial to lekcja, którą Shelly tworzy z programu. Zamiast podać gotową odpowiedź, prowadzi cię krok po kroku, abyś sam zbudował ten program, z podpowiedziami, krótkimi pytaniami i przyciskiem Sprawdź moją pracę. Dopasowuje się do poziomu ucznia na podstawie zdobytych odznak; bez takich danych zakłada, że zaczynasz od zera.

Turtorial zaczyna się w pustej przestrzeni roboczej, więc jeśli masz niezapisane zmiany, najpierw zapyta o ich zapisanie. Jeśli przerwiesz w połowie, wybierz Pomoc → Resume, aby wrócić do miejsca, w którym skończyłeś, w tej samej przeglądarce. Trzeba być zalogowanym.

Dzisiejsze hasło

Potrzebujesz pomysłu? Codziennie w konsoli przy starcie IDE pojawia się nowe twórcze słowo. Zmienia się o północy UTC. Zrób coś na ten temat, przy publikacji oznacz to tagiem Dzisiejsze hasło i zobacz w galerii, co zrobili dziś inni.

Pięć języków

IDE i ta strona są dostępne w językach English, Español, Français, 日本語 i Polski. Język wybierzesz w Ustawienia → Język. Polecenia Logo we wszystkich językach pozostają po angielsku, więc przykłady kodu działają wszędzie.