Задать вопрос
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Не работающий над большими проектами и не знающий о боли в них, которую привносит скобка не на той строчке.

    Я думаю, если тебе для этого надо компилятор специальный (в котором это даже отменить нельзя), то не так уж всё прекрасно в королевстве датском.

    Привыкай, ты пишешь не для себя. Ты пишешь, чтобы твой код читали. Другие разработчики.

    А у тебя другие разработчики так же пишут, как и ты? Прямо сидите в клетках и пишете всё так, как скажут? Запомни, программирование - это свобода. А когда ты пишешь по указке всегда и всё время, то твои проекты рано или поздно закрывают как нерациональные. Ты писал что-то пять лет, а какой-то менеджер решил это выкинуть - ну, я поздравляю тебя. Ты - как бомж, собирающий картон на свалке. Твой код - это просто картон, который нахрен никому не нужен. Ну, выплатят копейки тебе, но, по сути, что ты сделал за эти пять лет?

    Без прохождения этого линтера твою программу не примут, например

    Да мне похрену, как ты не можешь понять. Я запустил свою программу и пользуюсь ею годами. Кому-то ещё передал и люди пользуюутся ею и дела свои решают со стократной скоростью. Вот я тебе привёл jabber в пример - это вообще свободная программа, никакие линтеры там не нужны, а работает и безотказно. А другой парень придумал язык, на котором всё это написано, тоже без всяких линтеров. Открой для себя программирование. Программирование - это создание программ, а не когда ты там кому-то что-то на блюдечке преподносишь и тебя хвалят.

    и в базовый комплект входит go fmt - очень облечает жизнь.

    Этот fmt практически никак не настраивается. Это программа, она должна настраиваться по максимуму, но они не стали её делать такой, они её быстро выпустили, чтобы было похоже на правду.

    Ты мыслишь мерками прошлого века - как раз тех времен, когда был придуман Си.

    C и сегодня актуален, не зря сам компилятор Go сначала был написан именно на C.

    Во всей современной разработки ПО наводят единообразие. Для всех языков. Это существенно повышает производительность труда.

    Длинные, километровые строки повышают производительность труда? По-моему, их, наоборот, сложно воспринимать. А когда ты сидишь и думаешь, куда поставить скобку у функции - это как-то не того. Когда синтаксис от кода отвлекает. Нет, ты должен думать, куда поставить скобку, а не как алгоритм оптимальнее реализовать. А ты не пробовал перебрать двумерный массив двумя циклами for? Там очень много букв для этого надо писать. Кстати, на Go очень много надо вручную писать, потому что готовых вещей нет, прямо как в C было всегда, странное совпадение, да? Вроде всё так современно, а вроде и не очень. Прямо такой граф в трусах и шляпе. С одной стороны - новейшие интерфейсы, прорывная технология, с другой стороны - нельзя отнаследовать какой-нибудь сложный тип. Хочешь отнаследовать - пиши новую сложную копию. Исключений нет - это прорыв, но тут же надо сидеть и думать, как обработать ошибку, которой там нет вообще (затычки в виде подчёркиваний остаются по всему коду).

    Это позволяет разработчикам не решать одни и те же проблемы по тысячу раз

    Да-да-да, не решать одну и ту же проблему, особенно простой перебор какой-нибудь чего-нибудь. Ввод строки из консоли. Ну, напиши простую grep на Go, выложи код, посмеёмся вместе (если тебе начальник разрешит твоё время потратить).
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    VDoskuSvoi:
    Учи лучше Хаскель - то отточен гораздо лучше, долгими десятилетиями и имеет меньше архитектурых косяков.

    Да хреновый он какой-то. Медленные программы на нём получаются. В то же время jabber.ru работает на Erlang'овском сервере надёжно, выдерживая существенные нагрузки. Да и само содержимое у Erlang'а довольно простое и интуитивное.

    Так что Haskell - это для модников, которые ничего писать не собираются, а Erlang - для дела.

    Восторгаться красотой языка ради самого языка - это удел новичков.

    Нет, язык - это произведение искусства. У него точно так же есть архитектура, как и у любой программы, поэтому-то и видно, что C и Unix - это классные вещи (долго живут), а Go и Google - это какая-то левая хрень, которая на любителя или безоговорочного фаната. Go выпустили в виде такого обновлённого C, чтобы занять его место, но у них это не прокатит, потому что он реально не доделан.

    Можешь помочь spotifi написать построчный ввод в консоли на Go. Я думаю, вы оба не знаете о том, что там это в лучшем случае делается через одно место, тогда как во всех других языках такого вопроса даже не стоит. И про скобочку у функции я пример не просто так привёл. Нет никаких объективных причин, чтобы язык мне говорил, где я должен эту скобку писать. Она никак не относится к синтаксису ВООБЩЕ. Это точно придумал Пайк, у него одного такие личные глюки по добавлению ограничений.

    Не закапывайтесь в накоплении знаний, в изучении 100500 языков. Прикладывайте ваши знания к настоящему делу.

    Ты меня просто реально насмешил. Если ты пишешь на Haskell'е, то у тебя реально ничего нет. А если у тебя ничего нет, то и советовать ты не можешь, так как пишешь всё это через чужой браузер, который написан дядьками настоящими программистами. И ты даже об этом не задумываешься.

    Вы оба, и ты и spotifi, даже не в состоянии написать ответ в одном сообщении, потому что не можете подогнать среду для себя ;-) , поэтому пишете по 500 сообщений, которые заваливают мне почту впустую. И вы не сможете никогда, потому что для этого надо неплохо разбираться в том, что происходит при взаимодействии веб-приложения с браузером. Вот это всё и говорит об опыте и мастерстве владения мечом.

    spotifi:
    Путаетесь. Временем проверен совсем не язык, а компилятор.

    Временем проверено всё, но есть язык, а есть компилятор. И вот ты как раз и не понимаешь, что Go - это просто наскоро выброшенная хрень на рынок по приказу Google. Если они его не выпустили бы, им бы там зарплату сократили или что-то вроде того сделали. Если не понимаешь, про что речь, можешь лицензию почитать, в которой тебе Google благосклонно что-то разрешает при использовании Go, хотя мало имеет отношения к его разработке. Они могли бы сделать много чего хорошего, могли бы обратить внимание на многие вещи, но они не успели - их заставили выпустить продукт. А C делался реально от души и для дела, потому и вышел готовый ко всему, а потом шлифовался долгие годы до первого стандарта. Go же реально впихивают людям, организуя всякие промоакции на деньги Google.
  • Как с помощью argparse получить полный путь к скрипту?

    @abcd0x00
    Предполагаю, что автор библиотеки не хотел дублировать существующий функционал системной либы

    Не, просто это нафиг не нужно обычно, поэтому автор не стал добавлять такое в модуль. Тем более, что полный путь к программе и содержимое sys.argv далеко не всегда совпадают.
  • Почему обнуляется переменная заданная внутри цикла (bash скрипт)?

    @abcd0x00
    Saboteur:
    Вы вызываете внешнюю команду cat, поэтому то, что идет через конвейер | относится к внешней команде, а не вашему циклу. Отсюда "echo 1 freePipe" будет выводить внутреннюю переменную процесса cat, а не вашего цикла.

    Не, канал вызывает выполнение нового подпроцесса, поэтому все переменные, созданные в канале, видны только тем программам, которые в этом канале. Ты можешь сцепить несколько каналов и в каждом канале будет своя изолированная область видимости переменных.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi: вот что-что, а Erlang поинтереснее Go, так что я вчера в Erlang'е позанимался. Но если сравнивать C и Go - то C надёжный, проверенный временем, тогда как Go - ошибка на ошибке.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Ну, вот он пишет:
    Да, библиотека получается большая. В моем случае — 3,5 Мб.

    Причём это создание библиотеки, которая добавляется в проект.

    Сделай библиотеку на Go с функциями на Go, чтобы её можно было в /usr/lib положить и использовать из разных программ.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi: скинь код разделяемой библиотеки на Go. Не можешь.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi: ну, это просто смешно. Не надо обяснять, давай код. Ты даже код не можешь дать на Go, ошибаешься в рассуждениях о Go - значит, скорее всего, тебе нужно изучать Go, чтобы хотя бы просто сделать исходник примерный. Как ты мог спутать обёртку над сишной библиотекой с гошной библиотекой?
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi: Ты забыл одну вещь - пример кода на gist'е, из которого можно собрать распределённое приложение. Там должен быть основной файл на Go, который слинкован с динамической библиотекой, полностью написанной на Go, с которой можно слинковать ещё 100500 программ на Go.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Не выдумывайте. Это всего лишь компилятор.

    Ну, там же написано
    Cgo enables the creation of Go packages that call C code.

    Или ты ещё и перевести не в состоянии?

    Хочешь уменьшить размер бинарного файла, используя тот же метод как и Си - с dll/so - используй один компилятор.

    Так мне не нужны сишные библиотеке в Go, мне нужны нативные библиотеки - чтобы и основной код на Go писался, и код библиотеки на Go писался. А потом всё это собиралось и связывалось.

    Ты мне пытаешься пропихнуть, что типа если мне нужна разделяемая библиотека, то я должен писать обёртку, которая использует сишный API. С чего вдруг? Сишный API мне нужен тогда, когда мне нужен сишный API, а не всегда, потому что кто-то придумал, что бибиотеки в экосистеме языка не нужны никому.

    Доводы кончаются? Начали с размеров файлов, атеперь вам многопоточность не нравится?

    Не выдумывайте, то, чего не знаете.

    Давай пример кода: и основного кода на Go, и разделяемой библиотеки на Go. Просто два кода - один библиотека, другой - код, использующий библиотеку. Я просто скомпилирую, слинкую и посмотрю, как это красиво. Теоретизируешь.

    Но тем не менее, вам никто не мешает использовать раздельные пакеты и на серверах, возможность это в компиляторе присутствует. Будете единственным оригиналом.

    Ну, что ты ахинею несёшь-то? Ты не понимаешь, что тот же набор программ из /bin такой небольшой по размеру только потому, что использует общие библиотеки? Открой для себя программу ldd.
    У тебя есть одна библиотека, а пользоваться ею могут тысячи программ. За счёт этого тебе не нужно включать код библиотеки тысячу раз. А место на дисках я лучше использую для чего-нибудь более полезного. Если ты не понимаешь, что у тебя должен быть выбор и что программа должна быть компактна, - ну, покупай себе диски постоянно, купи себе целую компьютерную сеть и кабинет к ней, а то не хватит.

    Разумеется, если ты хочешь использовать модель многопоточности Go то это должны быть пакеты именно на Go

    Да, использовать многопоточность в библиотеке я хочу.

    А вы прочитали раздел "требования к железу" к Plan 9?

    Какое требование к железу, да ты хоть зачитайся. Я могу её поставить, но нужно ли это, если она не встаёт туда, куда встаёт десять не самых распространённых систем? Значит, там и внутри не густо.

    Все до единой Linux какими бы непохожими они не были - строго говоря не ОС, а надстройки над общим для всех ядром Linux

    Ты, видимо, совсем не понимаешь, что такое надстройка. Понимаешь, вот стоит дом многоэтажный - вот он не является надстройкой над своим фундаментом. А вот если у него на крыше построили сарайчик - это надстройка. Если сарайчик ветром снесёт вместе с крышей, никто и не заметит, что он там вообще был. Скажут, что крыша улетела у дома. Вот что такое надстройка.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Использование компилятора cgo вместо компилятора go позволяет получать маленькие программы, написанные на Go, которые также как и программы на Си, будут требовать для своего запуска библиотек *.so/*.dll


    Так это предлагается писать в Go на C для запуска кода из сишных библиотек.
    То есть это не написание кода на Go с библиотеками на Go. Вот сделай десять программ на Go с одной разделяемой библиотекой, которая тоже должна быть на Go и использовать многопоточность. Вот этого нет. А вместо этого ты должен делать что? Правильно, сишную прослойку.

    Такие распростаненные ОС как VmWare ESX или MacOSX или Solaris - тоже далеко не на всяком железе запускаются.

    Open Solaris, OpenBSD вставали без вопросов, хотя тоже не так уж и распространены (OpenBSD стараются, правда, делать как можно разнообразнее по железу). FreeBSD вообще легко встала, так как очень распространена. И на FreeBSD я KDE4 ставил, потом забросил, там нужно было настраивать разрешение экрана.

    А у меня вот не завелась на ноутбуке MacOSX.

    Ноутбуки слишком ограничены по железу, ты не можешь туда поставить всё, что существует, так как требуется, чтобы всё было компактно. Главная характеристика операционной системы - какое количество любого железа она поддерживает.

    Стив Джобс плохой или все же тот, кто не смог запустить его ОС недостаточно квалифицирован?

    Не, на его-то компах всё запускается, как и задумано.

    Роб Пайк плохой или все же тот, кто не смог запустить его ОС недостаточно квалифицирован?

    Тут я полазил, посмотрел, что у него за ОС. Как-то похоже это больше на надстройку. Мелковата она для ОС.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    А чем ты объяснишь мотивацию независимых от Google крупных корпораций?

    Есть мода на всё новое. Вот сейчас выходит Swift - тоже сырая очередная фигня. Но его сейчас тоже начнут активно юзать. Это как джинсы клёш. Что они гораздо лучше других штанов? Да ничего подобного, поэтому сегодня в них никто и не ходит.
    Относительно самого Go можно сказать, что там удобно сделана многопоточность и он достаточно быстр (то есть у приложений получается высокая пропускная способность). Но это годится только для движков, и то которые не планируется кардинально развивать дальше. По возможностям, ну, я тебе говорю, сделай построчный ввод. Вот его как не было, так и нет. Что, писать его руками? Сейчас время не то, чтобы такие вещи руками писать.

    bamaz:
    Почему "не пошла"? Plan 9 уж лет 30 как существует.

    Ну, у тебя есть на компе? У тебя нет на компе. Я пытался поставить, она не встала на железо. Это говорит о чём? Что её мало используют, поэтому и спектр поддержки железа узок. А Inferno я даже не пытался ставить, просто знаю, что если Пайк делал и оно не выстрелило, то там вполне ожидаемая картина.

    spotifi:
    Программы, написанные на Си, маленькие только с одного бока - они тянут за собой при запуске здоровенные библиотеки *.so/*.dll.

    Они ссылаются на то, что якобы разные версии библиотек доставляют проблемы, поэтому они всё включают в каждую программу (слитно/раздельно - неважно). Но почему я не могу выбрать, как мне удобно? Почему какой-то дядька (который идёт ещё и в ногу с Google'ом - далеко не гуманитарной компанией) за меня решает, как мне программы писать и распространять?
  • Как выполнить многостроковый поиск на bash с использованием сложного регулярного выражения?

    @abcd0x00
    Di9: ну да, надо сначала всё подготовить, а потом разбирать. Можешь подробнее написать о процессе создания лога. Возможно, его и создавать по-другому надо.
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:
    Докажи что у C все хорошо со стандартизованностью.
    Скопилируй под FreeBSD 10

    Так тебе же говорят, что это не C. Ты открой исходник и посмотри, видишь там расширение cpp? Вот это означает c plus plus. А C и C++ - это разные языки, у них разные как стандарты, так и авторы. Если C написан Ритчи, который сделал ещё и UNIX (не менне успешная, чем C), то C++ написан Страуструпом, который не сделал больше ничего. Поэтому они различаются по качеству. Один - программист и создатель, другой - подражатель и книгописатель.

    А Go написали Томпсон и Пайк. Вот Пайк хотел сделать операционную систему, с ней было то же самое - идея хорошая, а реализация не пошла. В результате, он стал делать язык, чтобы хоть что-то после себя оставить. Вот они его и выпустили наскоряк, так как уже старые и побоялись, что могут просто не успеть на старость лет выпустить шедевр. Плюс ещё всё это под эгидой Google, а Google свою бизнес-политику ведёт по принципу, как бы захватить рынок того и сего. Понимаешь, тут о качестве речь не идёт, ими движут совсем другие мотивы. Потому-то всё и сделано через одно место.

    Это вполне рабочий проект - используется в Yandex в production.

    Я не занимаюсь C++, там много лишней и неправильной хрени, которую сначала добавляют, потом пытаются выпилить. Это говорит о непродуманности. Взять тот же стек или список там, пользоваться ими невозможно, обязательно надо на их основе писать собственный. Но дело-то в том, что собстенный я могу написать и без их основы. Тогда нахрен они нужны в библиотеке, если пользоваться сразу ими нельзя? Вот из-за таких моментов я его и не изучаю. Какой смысл изучать то, что не работает сразу или что завтра объявят депрекэйтед? А о C такого не скажешь, поэтому его я учу полностью и планомерно.

    На Go даже более объемные вещи компилируются с полпинка.

    Ну, возьми каталог /bin у себя в системе, вот он на C практически весь. Воспроизведи его на Go - и ты поймёшь, что когда десять маленьких программок весят двадцать мегабайт - это как-то не того. А на C они весят сто килобайт. Это вот тоже новшество Go, а вопрос такой - а почему это не настраивается? Может, я не хочу метровые программки.

    Напиши программу считывания строк в консоли на Go. Ты её не напишешь.

    С Sharp:
    Количество пользователей его программок равно трём колекам. :))

    spotifi:
    Фактически, MSVC - один из самых значимых компиляторов.

    Ты уже говорил в прошлой теме, что винда - классная система. Так что это неудивительно, что сейчас ты продолжаешь в том же духе.

    Кроме формальных стандартов есть еще и неследование компиляторов этим стандартам.

    Какие компиляторы не следуют стандартам C? Я встречал только, что компилятор конфликтовал по имени между меткой и переменной, хотя не должен:
    struct x {
        int x;
    };

    Не помню, где было дело, но это не должно конфликтовать, так как по стандарту такие имена находятся в абсолютно разных пространствах. Сейчас проверил в GCC - всё пучком, значит, это было в MSVC.

    C Go подобное проходит с полпинка. И даже под MacOSX и Windows.

    Каталог /bin на Go у тебя займёт пару гигабайт - нормально это?
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    spotifi:

    Сначала про C:
    Никакую шлифовку С годами не проходил. Так как должен был сделовать единожды придуманном правилам.

    Ты попробуй напиши хоть одну программу, которая проживёт хотя бы лет пять. У тебя не получится, любой первый конкурент (если они вообще будут) выместит твою программу своей более улучшенной.

    И сделали это весьма неаккуратно. В результате порождена целая плеяда подстандартов - и в настоящее время одна и та же программа может даже не скопилироваться на различных компиляторах.

    Это бредни от незнания. Я читал, что ты писал выше про C, и видел, как ты назвал компилятор от Microsoft стандартом. Это значит, что ты не понимаешь, что такое стандарт.

    Нет никакой плеяды стандартов, есть только три стандарта языка, расширяющих друг друга, выходящие раз в 10 лет - C89, C99, C11.
    Всё, что ты напишешь в любом из этих стандартов, должно и обязано работать одинаково во всех компиляторах, реализующих соответствующий стандарт. Компилятор не может нарушать стандарт.

    Пожалуйста, скомпилируйте это под FreeBSD 10

    А при чём тут C? Там же в требованиях написано C++. Или тебе ещё нужно разъяснить, что C и C++ - это разные языки?

    Requirements
        C++11/14/17 compiler (yep, using C++17 opens additional functionalities).
        Boost.Thread - for TLS.


    Ага. Отстрелить себе ногу с помощью Си - расхожая программистская пословица.

    Ну да, я и говорю, что ты разницы не знаешь между C и C++. Если бы знал, то и пословицу из книжки по C++ к C никак бы не отнёс.

    Сам же язык весьма и весьма ограничен в изменениях - иначе не будет совместимости.

    Не, нужно смотреть, что убрали из C с тех пор, как он появился и стандартизовался. Так вот убрали только несколько незначительных вещей типа неявного int'a и ещё функции gets(). Если же на C++ посмотреть, то там постоянно множество недавно введённых вещей объявляют устаревшими. В результате язык разрастается, а потом это всё убрать не могут и он тянет всё это за собой в следующие версии. Вот это и говорит о продуманности того или иного языка.

    Тому кто всю жизнь пишет ХелоуВорды - не понять реальные проблемы.

    Так ты учись - и тогда проблем не будет. А то по вершкам нахватался, а потом написать что-то пытаешься. Так не бывает. Либо ты знаешь и делаешь, либо не знаешь и имеешь постоянные проблемы.

    Теперь про Go:
    Большие серьезные программы читает множество людей.
    Программные библиоки - читает множество людей.

    В питоне только ушли от длинных строк, эти берут опять возвращают всё обратно. Думаешь, я тебе просто так пишу про табуляцию? Ты знаешь, что будет, если у тебя три уровня вложенности (не считая уровня функции)? С четырьмя пробелами это будет смотреться прекрасно, с табуляциями это уедет вправо, потому что они занимают по восемь пробелов. Если не знаешь, то бывает вообще отступ по два пробела, так даже такой отступ они заменят на табуляцию.

    Это должно быть опционально (чтобы можно было отменить часть замен), это должно настраиваться (чтобы можно было поставить четыре или два пробела). То есть должна быть возможность подменить шаблон замены. А так это всё по-тупому сделано наскоряк и выдаётся как специальное новшество, когда у людей возникают вопросы.

    Программу нужно писать так, чтобы ее легко читали другие люди - твои коллеги.

    А ты не знаешь, видимо, что там в функции может быть select, а в select'е - цикл, да не один а с вложением какого-нибудь условия. Там принято часто использовать анонимные функции (сразу создал и сразу вызвал), а в функции у нас что? Там не пусто, там операторы, а операторы требуют своих отступов. В результате всё заканчивается километровыми строками, как где? Правильно! Как в php и java.

    Вы, очевидно, не работали в коллективах, где уделяют внимание взаимозаменяемости программистов

    Да у тебя автобусное число равно единице :)

    Во многих компаниях есть еще более жесткие правила - например, обязательное именование переменных в camelCase.

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

    У нас пока программа не пройдет проверку линтерами, которые еще более жесткие ограничения ставят на стиль - ты просто не имеешь право претендовать на зарплату.

    Ну, и правильно сделано, а то какой-нибудь дворник во время перерыва вклинится и станет писать что-нибудь от имени члена команды.

    Программа, которую надо выбрасывать вместо того, чтобы настроить, - это плохая программа, некачественная.
    Там ещё много сюрпризов, сколько уже прошло с 2009 года, скоро уж десять лет будет, а он всё ещё сырой, всё ещё не решаются на него полностью переводить проекты, потому что где-нибудь что-нибудь да вылезет опять.

    И научись уже писать всё одним сообщением, а то всё это валится в почту по десять сообщений. Не знаешь как это делать - спроси ;)
  • Имеет ли смысл начинать с Си?

    @abcd0x00
    Данил Антошкин:
    Убедили посмотреть в сторону Go, какие там проблемы могут возникнуть

    Там очень много тупизны. Си сделан гораздо лучше и прошёл 40 лет шлифовки.

    Вот тупизна в Go из такого разряда:
    package main
    
    import "fmt"
    
    func f() int
    {
        return 1
    }
    
    func main() {
        fmt.Println(f())
    }

    Этот код не скомпилируется, потому что у функции f открывающая фигурная скобка стоит на новой строке.

    А если ты запустишь для этого исходника ещё
    go fmt
    то четырёхпробельные отступы превратятся в табуляции. Причём у тебя не спросят, нужно ли тебе это, и поменять это нельзя.
  • Как узнать пересечение линий?

    @abcd0x00
    fshp:
    Ясно, я понял: ты ищешь точку пересечения прямых, которым принадлежат отрезки, а потом координаты точки пересечения прямых сравниваешь сначала с координатами концов первого отрезка, а потом - с координатами концов второго отрезка.

    Но ошибку у тебя нашёл одну всё равно
    [guest@localhost crossfunc]$ echo "0 0 5 5   0 0 -2 -2" | ./crossfunc 
    Прямые параллельные
    [guest@localhost crossfunc]$

    Тут у отрезков одна общая точка - X(0; 0).

    Функция должна возвращать либо да, либо нет. А в идеале, конечно, она должна различать параллельные отрезки, имеющие общие точки, и параллельные отрезки, не имеющие общих точек.
  • Как узнать пересечение линий?

    @abcd0x00
    fshp:
    Она не попадает под условие для CD по ординате. 0 <= 4.5 <= 4. Это неверно.

    Тут ещё неясно, как ты определяешь максимальные и минимальные концы. Где вот ты взял 0 и 4, как ты понял, что именно их надо брать? Так что, если код такой простой, то ты сможешь без труда его накидать мне, чтобы я его мог поломать координатами.
  • Как узнать пересечение линий?

    @abcd0x00
    fshp:
    Немного другой способ, значения нормализованы.

    Это не немного другой способ - это система уравнений с векторами.

    Вот твой пример
    min(A.x, B.x) <= x <= max(A.x, B.x)

    Вот так не прокатит. Хоть по условию отрезки соединены последовательно, но мы можем рассматривать, допустим, первый и пятый, которые могут быть расположены как угодно по отношению друг к другу. И, значит, они имеют такие координаты: два отрезка AB и CD.
    AB A(0; 0) B(10;10)
    CD C(5; 4) D(9; 0)

    У них нет точки пересечения, но точка пересечения прямых - X(4.5; 4.5), вот она попадает в твоё условие.