LINUXTALKS.CO
Ответ на: комментарий от LINUXTALKS-CO

Вчера буквально сел за Си и это история успеха.

Началось с того, что опять буржуй неосилятор не смог запустить мой лайнчер для майнкрафта. Это не удивительно, я уже два года обещаю для них сделать подробный гайд, но мне всё лень. А в лайнчере 20 строк bat кода.

По моральным соображениям я в Git не тянут строку, в которой перечисленный все библиотеки, необходимые для запуска Minecraft, но делал zip релизы, где строка была.
Макаки конечно не догадывались качать релиз и копировали код из master.
Собственно эту строку генерировала отдельная утилита на Python, которая была вынесена в отдельный репозиторий.

Но так, как Python даже Маск не смог запускать, что не удивительно, потому что даже меня выбешиват входить в venv, чтобы куча зависимостей заработала, было принято решение переписать утилиту на компилируемый язык.

Я бы взял Crystal, так как последнее время на нём пишу, Go просто не нравится, но Crystal не умеет Windows. По этому не долго думая выбрал свою любимую Сишку.

Через недолго была написана утилита, которая достигла полного паритета с Python версией и по количеству строк кода не сильно уходила от оригинала.

А, для чего писал я это?
Я получил лютый кайф писать на Сях снова. Сегодня займусь всякими гейскими плюшками из высокоуровневых языков наподобии цветного выхлопа.

IIIypuk    
★★★
Android / Chrome
Ответ на: комментарий от IIIypuk

Это хорошо

аподобии цветного выхлопа

#include <stdio.h>


#ifndef color_off
  #define cired()  "\x1B[31m"
  #define cigre()  "\x1B[32m"
  #define ciyel()  "\x1B[33m"
  #define ciaqu()  "\x1B[36m"
  #define cidef()  "\x1B[39m"
#else
  #define cired()
  #define cigre()
  #define ciyel()
  #define ciaqu()
  #define cidef()
#endif

#define red(message) cired() message cidef()
#define gre(message) cigre() message cidef()
#define def(message) cidef() message cidef()
#define yel(message) ciyel() message cidef()
#define aqu(message) ciaqu() message cidef()

enum
{
  RED     = 31,
  GREEN   = 32,
  YELLOW  = 33,
  BLUE    = 34,
  PURPULE = 35,
  AQUA    = 36,
  DEFAULT = 39,
};
static void colorset(int color)
{
  printf("\x1B[%dm",color);
}

int main(int argc, char *argv[])
{
    /*так*/
    const char text[] = aqu("А я томат!");

    printf( red("Это ") gre("разноцветный ") yel("текст. %s\n"), text);

    /*или вот так и эдак*/
    colorset(RED);
    printf("В этом царстве-государстве всё красное!\n");

    colorset(YELLOW);
    printf("А в этом всё жёлтое!\n");

    colorset(DEFAULT);
    printf("А в остальных по обычному"gre("!\n"));
    /*я использую иногда когда мне хочется маленько смузи =)*/
    return 0;
}

Например для типа юнит-тестов

xxx

LINUXTALKS-CO    
★★★
Последнее исправление: LINUXTALKS-CO (всего исправлений: 4)

Linux / Firefox
Ответ на: комментарий от IIIypuk

1

#include <stdio.h>

/*--------------Тут просто кишки----------------*/

/*просто цвета*/
#ifndef color_off
  #define cired()  "\x1B[31m"
  #define cigre()  "\x1B[32m"
  #define ciyel()  "\x1B[33m"
  #define ciaqu()  "\x1B[36m"
  #define cidef()  "\x1B[39m"
#else
  #define cired()
  #define cigre()
  #define ciyel()
  #define ciaqu()
  #define cidef()
#endif

/*цвета + начертания - жирно*/
#ifndef bold_off
  #define b_cired()  "\x1B[1;31m"
  #define b_cigre()  "\x1B[1;32m"
  #define b_ciyel()  "\x1B[1;33m"
  #define b_ciaqu()  "\x1B[1;36m"
  #define b_cidef()  "\x1B[1;39m"
  #define boldoff()  "\x1B[0m"
#else
  #define b_cired()  cired()
  #define b_cigre()  cigre()
  #define b_ciyel()  ciyel()
  #define b_ciaqu()  ciaqu()
  #define b_cidef()  cidef()
#endif

/*цвета + начернтание - курсив*/
#ifndef cur_off
  #define c_cired()  "\x1B[3;31m"
  #define c_cigre()  "\x1B[3;32m"
  #define c_ciyel()  "\x1B[3;33m"
  #define c_ciaqu()  "\x1B[3;36m"
  #define c_cidef()  "\x1B[3;39m"
  #define cursoff()  "\x1B[0m"
#else
  #define c_cired()  cired()
  #define c_cigre()  cigre()
  #define c_ciyel()  ciyel()
  #define c_ciaqu()  ciaqu()
  #define c_cidef()  cidef()
#endif

/*---------------------тут API само-----------------------*/

#define red(message) cired() message cidef()
#define gre(message) cigre() message cidef()
#define def(message) cidef() message cidef()
#define yel(message) ciyel() message cidef()
#define aqu(message) ciaqu() message cidef()

#define b_red(message) b_cired() message cidef() boldoff() 
#define b_gre(message) b_cigre() message cidef() boldoff() 
#define b_def(message) b_cidef() message cidef() boldoff() 
#define b_yel(message) b_ciyel() message cidef() boldoff() 
#define b_aqu(message) b_ciaqu() message cidef() boldoff() 

#define c_red(message) c_cired() message cidef() cursoff() 
#define c_gre(message) c_cigre() message cidef() cursoff() 
#define c_def(message) c_cidef() message cidef() cursoff() 
#define c_yel(message) c_ciyel() message cidef() cursoff() 
#define c_aqu(message) c_ciaqu() message cidef() cursoff()

enum
{
  RED     = 31,
  GREEN   = 32,
  YELLOW  = 33,
  BLUE    = 34,
  PURPULE = 35,
  AQUA    = 36,
  DEFAULT = 39,
};
static void colorset(int color)
{
  printf("\x1B[%dm",color);
}

int main(int argc, char *argv[])
{
    const char text[] = aqu("А я томат!");

    printf( b_red("Это ") gre("разноцветный ") c_yel("текст. %s\n"), text);


    printf("В этом "b_red("ЖИРНОМ")" царстве-государстве всё красное и "c_red("курсивное!")" иногда\n");

    printf(yel("А в этом всё" b_red(" не ") c_aqu("жёлтое") " и обычное!\n"));

    printf(c_gre("А ") b_gre("в ") c_aqu("остальных по обычному ")c_gre("!\n"));
    return 0;
}

Как добавить подчёркивания и прочее разберёшься сам. Там видно код 1 жирно код 3 курсив [0m сброс. Ну и покомпактнее можно сделать, но я накидал пример в лоб что-бы нагляднее было.

LINUXTALKS-CO    
★★★
Последнее исправление: LINUXTALKS-CO (всего исправлений: 1)

Linux / Firefox

Но Самый лучший ЯП – это, конечно же, хаскель

На нём почти ничего нельзя написать, кроме факториала, зато как интересно это делать!

Crocodoom    
★★★★★
Android / Chrome
Ответ на: комментарий от Crocodoom

Лет 50 будут переписывать. Си если станет неактуальным то лет через 100. Раньше если только пойдёт что-то прям революционно новое (для рынка) вроде квантовых карманных компуктеров которые путём ухищнений смогут в произвольные вычисления и тут уже вдруг сложится так что сишка будет просто архитектурно в плане подхода к разработке фундаментально неподходить, а будет лишь использоваться в вспомогательных чипах.

Или может вдруг мир откажется от софта вообще и вместо скачавания приложений мы будем вставлять типа чипики аля флешки внутри которых будут ASIC`ки с аппаратной реализацией софта. И массовые программисты станут ненужны в принцие кроме тех кто на верилоге или подобном переписывает фотошопы на TTL логику =)

Скорее всего произойдёт последнее, более того я уверен что так будет и появится класс устройств с слотами для хардварного «ПО». Высокая надёжность, сверхбыстрая работа, крайне низкое энергопотребление. Тогда и раст и остальные ЯП никому уже будет ненужны.

Ну, а так. Я не программисит и даже не АЙтишник, я просто любитель. Перетыкавший палочкой десятка два языков в начале. И только Сишка зашла без палок в колёса. Не скажу что я её хорошо знаю, но знаю я её достаточно для решения моих скромных задачек.

Мне ещё луа нравится, но она нравится мне архитектурно, как оно сделано и как красиво встраивается в другие языки ососбенно в сишку особенно через FFI, синтаксис там гавно гавнявое. Только таблицы норм. А вот остальные вызывает ломку, но если писать простенькое что-то то намана =)

LINUXTALKS-CO    
★★★
Linux / Firefox

Лучший язык прогаммирования – это божественная Java. Никакой возни с полоумными указателями или пердолинга с макросами. Плюс обширная стандартная библиотека. Все остальные языки – говно.

u-235    

Android / Firefox