Chcę nauczyć się programować

Dygresja wyodrębniona z wątku:

@robotox1 tytuł roboczy, możesz zaproponować inny.

A w jaki sposób mogłbym to skompilować na binarny kod tak jak jest to w /usr/bin ? Większość programów instalowanych z pacmana/aur’a się tam znajduje i chciałbym się nauczyć jak zrobić coś podobnego.

Szczegółowej instrukcji nie podam, bo to dosyć złożone i… jej nie znam :slight_smile:
Ale generalnie, najpierw musisz w jakimś języku programowania napisać jakiś program, który coś tam będzie robić. A następnie go skompilować, korzystając z odpowiedniego kompilatora.
Przykładowo, pisząc coś w języku C/C++ powinieneś skorzystać z jakiegoś kompilatora dla C/C++ wymienionego w wiki Archa.
A tu maszlistę innych języków/kompilatorów w Archu.
Powodzenia :slight_smile:

@robotox1 -> skrypty piszesz po to, aby skryptami były. Jeżeli chcesz tworzyć binarki, to piszesz kod w odpowiednim języku i kompilujesz (są języki, których możesz użyć na oba sposoby). Język wybierasz w zależności od znajomości, potrzeb, etc. Przede wszystkim jednak, musisz sobie odpowiedzieć na pytanie: na co mi, to potrzebne; w jakim celu chcę, to robić?

Umiem programować głównie w Python, JavaScript i podstawy C++. Pierwszych dwóch języków nie skompiluje. Myślałem, że w /usr/bin znajdują się jakieś launchery do wszystkich programów, które są po prostu skompilowane i chciałem uzyskać podobny efekt na skrypt bash’a. W czym są zatem napisane podstawowe komendy linuxa typu ls, cd, pwd, whereis ?

@azja
Chcę przygotować się pod wydanie własnego pakietu, więc szukam odpowiedniego miejsca na prawidłowe umieszczenie go w systemie. Z tego co zauważyłem praktycznie wszystkie programy znajdują się w folderze /usr/bin, więc myślałem, że też będę musiał go tam umieścić.

Python? Przecież tworząc projekt, podstawowym plikiem jest setup.py do instalacji programu z uwzględnieniem prostej konfiguracji:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

config = {
}

Po za tym kompilacja pythona jest możliwa do .exe, pod linuxem jest zbędna przez wyżej podany przykład.
Większość komend linuxowych to czysty C, jak i samo jądro linuxa.

Kompilacja Python’a - mimo że jest, to język skryptowy - jest jak najbardziej możliwa:

Na początek, aby nie mieszać w systemie, polecałbym /opt/. Poza tym, upraszczasz sobie w ten sposób cały proces, bo nie musisz parcelować plików pomiędzy bin, lib i inne foldery, bo cały swój program masz w jednym (np. /opt/moj-prg/).

Dodam tylko że to mija się z celem.
Python został stworzony z myślą o otwartym kodzie i możliwością łatwej edycji.
Binarka czy kompilacja do .exe nam to blokuje.

Jeśli już uparcie chcemy ukryć kod przed nieogarniętymi w Linuxie, udostępniamy plik *.pyc. Mówię mało ogarniętych, bo jest możliwość dekompilacji. Kompilacja zaś wygląda następująco:

  1. Dla bieżącego katalogu (w którym się znajdujemy)
    python(versia) -mcompileall .
  2. Cały katalog
    python(versia) -mcompileall nazwa_katalogu
    Gdzie za versia podmieniamy wersję pythona w którym został napisany skrypt.

Otworzy to nam katalog __pycache__, gdzie znajdziemy plik *.pyc*, który można udostępnić.
Jeśli nasz projekt obejmuje strukturę i ładnych parę linijek, binarkę tworzymy dla pliku setup.py.

Jak już pisałem - język skryptowy po to jest, aby skryptem być, ale chcącemu nie zabraniam i o powody nie pytam. Choć na pewno warto zastanowić się nad stosowniejszym rozwiązaniem, czyli wyborem innego języka, np. C++ — @robotox1 -> jeżeli znasz już podstawy, to nic prostszego, jak rozwinąć się w tym kierunku. Aczkolwiek przedtem - o czym również wspominałem - warto zastanowić się nad odpowiednim językiem, do odpowiednich zadań.