LINUX.ORG.RU

Сообщения avg_linux_enjoyer

 

Почему тулинг для Си такое дерьмо?

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

Си - отсутствие нормальной обработки ошибок, структуры с бесконечным синтаксисом со звездочками для передачи указателей. Возврат одного значения из функций или костыли с массивами. Отсутствие RAII. Постоянный выбор передать в функцию указатель на данные или вернуть новую (хз как лучше, кроме соображений о скорости при больших размерах данных).

Сборка - Makefile с его отвратительным неинтуитивным синтаксисом. Cmake нельзя.

Дебаггинг - в VSCode из коробки для проекта из больше чем 1-го .с файла ничего не работает. Да и не из коробки это работает коряво. Остается lldb и gdb, а это то еще веселье на проекте больше чем хэллоу ворлд. Valgrind тоже не самый лучший вариант. Приходится извращаться с дебагом через printf.

Смотрю на тулзы для разработки под современные SPA фреймворки и там можно найти все что хочешь для удобства.

Почему Си такое говно?

Перемещено Zhbert из development

 

avg_linux_enjoyer
()

Почему Rust в 2 раза медленнее Си?

% time ./c
./c  2.02s user 0.02s system 99% cpu 2.040 total
% time ./rust
./rust  4.84s user 0.04s system 99% cpu 4.886 total

Код на Си:

#include <stdio.h>

int slow_sqrt(int nbr)
{
	int i = 1;
	while (i < nbr)
	{
		if (nbr / i == i)
			{
				return i;
			}
		i++;
	}
	return 0;
}

int main(void)
{
	printf("Number %d", slow_sqrt(2147483646));
	return 0;
}

Код на Rust:

fn main() {
    let x: i32;
    x = slow_sqrt(2147483646);
    println!("Number {}", x);
}

fn slow_sqrt(nbr: i32) -> i32 {

    let mut i = 1;

    while i < nbr {
        if nbr / i == i
        {
            return i;
        }
        i += 1;
    }
    return 0;
}

По всей видимости Rust еще сырой язык для профессиональной разработки. Буду использовать Си.

 , ,

avg_linux_enjoyer
()

Книги по Си, системному программированию и Computer Science

Сабж. Большинство курсов и гайдов по Си учат писать хелло ворлды через printf. А хочется жести с системными вызовами.

Пробовал трехтомник Столярова. Некоторые моменты хорошо объяснены, но есть много воды и шизы автора вроде «ВЫ ОБЯЗАНЫ НАЗЫВАТЬ ДИРЕКТОРИИ ДИРЕКТОРИЯМИ, НЕ ПАПКАМИ, Я ЛИНУКСОИД!!!».

Еще у Столлмана недавняя книга норм, но она как мануал и достаточно сухая.

Поделитесь источниками знаний!

 , ,

avg_linux_enjoyer
()

RSS подписка на новые темы