#10 13.03.08 21:08
Re: Кто компилировал под Linux? Отзовись!
monarx, IDE, подобных борладовскому я не знаю, но большинство программных пакетов компилится при помощи сценариев для make (Makefile, надеюсь, знаешь)... если же программа состоит всего из пары файлов, то просто команды gcc тебе хватит... а тектовых редакторов с подсветкой синтаксиса С/С++ ооочень много... тот же mc достаточно хорошо это делает...
вот пример файла-сценария Makefile из одного раннего моего проекта:
Код: Makefile:
CC=gcc CFLAGS=-Wall -O2 LIBS=-lz -lm -lmysqlclient -lcrypto all: bin/TelnetProxy bin/TelnetProxy: $(patsubst %.c,%.o,$(wildcard *.c)) $(CC) $^ -o $@ $(LIBS) %.o: %.c $(CC) $(CFLAGS) -c -MD $< include $(wildcard *.d) clean: -rm -f *.o *.d *~ clear: -rm -f bin/TelnetProxy *.o *.d *~
его было достаточно для компиляции всех файлов и сборки в один исполняемый модуль...
Offline
#11 13.03.08 21:14
#12 13.03.08 21:15
#13 14.03.08 01:26
#14 14.03.08 03:42
#15 14.03.08 09:44
#16 14.03.08 09:45
#17 14.03.08 20:05
Re: Кто компилировал под Linux? Отзовись!
непонял как откомпилировать набранный текст в kdevelope? повезло, всё предложенное шло на одном диске с ядром
OCTAGRAM написал(а):
IDE, короче
Emacs, KDevelop, Eclipse+CDT, Monodevelop...
, кроме motor, он на другом диске, пакеты, которые с ядром я установил через apt-get install [pakcage], а вот с другого диска пакеты уже не распознаёт, как сделать?
Offline
#18 15.03.08 23:23
#19 16.03.08 20:56
#20 17.03.08 09:22
#21 21.03.08 19:48
#22 22.03.08 10:19
Re: Кто компилировал под Linux? Отзовись!
monarx написал(а):
Ещё такой вопрос: на винде для линукса можно писать? А то под линукс ваще не тема программить.
нельзя, код на с++ получится корявый, глючить будет
однозначно можно под линуксом, точно можно под freebsd, есть успешные случаи когда под линукс писали сидя под solaris
Offline
#23 22.03.08 21:33
Re: Кто компилировал под Linux? Отзовись!
monarx, можно. Для этого нужно использовать MinGW или Cygwin. Т. е. чтоб там было юниксовое окружение и gcc. Ну и IDE можно поставить. MinGW Developer Studio, Dev-C++ или Codesourcery G++. Возможно, Eclipse+CDT и Sun Studio тоже подойдут.
Либо можно поставить те же самые IDE, что и для Linux, например, KDevelop. Но это уже, скорее всего, будет проще сделать через Cygwin, чем через MinGW.
Для полноты картины укажу ещё, что для Windows, кроме третьесторонних Cygwin и MinGW, есть ещё Interix от самих Microsoft. В отличие от Cygwin и MinGW, Interix является не прослойкой над WinAPI, а самостоятельной подсистемой, такой же, как подсистемы Win32, Win16 и DOS.
P. S. А тебе точно надо на C++ писать?
Offline
#24 24.03.08 22:55
#25 25.03.08 02:38
Re: Кто компилировал под Linux? Отзовись!
Судя по постам, будешь с C++ом как обезьяна с гранатой, только без обид. И чего ради, непонятно. Для успешного использования C++ нужно задать много вопросов, и на многие найти ответы. Ну не может, не может такой человек писать посты вроде #4.
Offline
#26 25.03.08 03:59
#27 25.03.08 21:15
#28 25.03.08 23:07
#29 26.03.08 15:27
#30 26.03.08 16:46
Re: Кто компилировал под Linux? Отзовись!
OCTAGRAM написал(а):
знание алгоритмов при разработке пакетов мне помогает примерно также, как умение доить корову при приготовлении манной каши.
фасовочных пакетов?
коров доят специально обученные люди, их называют доярками и доярами.
манная каша - отстой, как и паскаль, вижуалбейсик, "острый си" и жава (хотя некоторым нравится)
С++ ничем не хуже прочих языков для того, чтобы учиться программировать. иногда мелькает мнение, что нужно начинать с питона (о да, питон! питон! великий язык будущего, "который одинаково хорошо подходит как для новичков, так и для профессионалов!" - не верю)
С/C++ хорош тем, что не дает забывать о том, что есть биты, память, процессор и прочие элементы из супового набора. проблема говноязыков в том, что если на них учиться, то потом компьютер воспринимается как некий аппарат, в который с одной стороны что-то суешь (баранов, ага), а с другой стороны получаешь продукт (колбасу, ага)
Offline
#31 27.03.08 18:00
Re: Кто компилировал под Linux? Отзовись!
Matrim написал(а):
С/C++ хорош тем, что не дает забывать о том, что есть биты, память
Это не лучший из языков, которые не дают забывать о...
Раньше люди были счастливы, если программа заработала. Когда появился C, люди были счастливы, что они могут выполнять одну и ту же программу на разных архитектурах. Новые требования начались с появления вируса Морриса. Теперь уже было недостаточно, чтобы программа просто работала, нужны были гарантии. С тех пор языки C и C++ только устаревали и устаревали. Тот класс ошибок, который специфичен только для C и C++, одновременно и особенно опасен. Если изжить C и C++, ну или хотя бы оставить их выполняться только на .NET (Managed C++) и Valgrind, тогда можно было бы перейти к продуктивному решению ошибок более высокого уровня. Программисты на C и C++ -- это тормоз прогресса.
Offline
#32 27.03.08 18:53
#33 27.03.08 19:01
#34 28.03.08 15:30
Re: Кто компилировал под Linux? Отзовись!
Matrim написал(а):
иногда мелькает мнение, что нужно начинать с питона
Ну в MIT'e теперь начинают, хотя я этот шаг их не понял. Вроде известные курсы SICP у них были по Схеме (кстати, есть у меня в шаре видео 8,86Gb и PDF), зачем переходить на Питон было?
Я вот с Бейсика начинал, который как бы невзначай вместе с MS-DOS 6.22 был. И ничего, жив-здоров. Я же не остановился на нём. Хотя сейчас я едва ли, что вспомню из того времени.
Offline
#35 28.03.08 15:33
#36 30.03.08 23:01
#37 02.04.08 07:46
#38 09.04.08 01:52
#39 09.04.08 10:42
#40 10.04.08 21:25
#41 17.04.08 15:23
Re: Кто компилировал под Linux? Отзовись!
Скажем, КМП ты не будешь каждый раз писать заново. Это гмм... дорого. Во-первых, don't repeat yourself, во-вторых, время на отладку и тестирование. Что-то можно реализовать, особенно, если это ключевое место в программе и можно развернуться, но по каждому неудобному случаю перереализовывать готовое (как правило) проигрышная стратегия.
Jaguar, поясни. Мне вот моё олимпиадное прошлое практически никак не помогает. Базовые алгоритмы вроде быстрой сортировки я вообще за алгоритмы не считаю, а более продвинутые вроде КМП или проталкивание предпотока я уже наизусть и не помню, но я и не реализую. Повседневные трудности -- это чтоб программа нормально с Unicode работала, чтоб переносима была. Привязки к библиотекам делать, тоже надо. Сейчас вот переношу XMLCopyEditor на Mac OS X, чувствуется, что писал новичок. Нет проверки, принимает ли libiconv char** или const char**. Хотя должна быть, в Autotools эта проверка точно есть. Не упомянуты 3 зависимости. Я уже вместо INSTALL configure.in читал, потому что раз сюрьприз, два сюрьприз, чего-то опять не хватает. В нескольких местах зашит внутрь путь /usr/local/share/xmlcopyeditor. В Makefile и в исходных кодах (!!!). Вот это я понимаю, на коленке делали. Только эта наколеночность перпендикулярна алгоритмам. Этот новичок, быть может, хоть трижды специалист по алгоритмам, но если эти алгоритмы не завернуть должным образом, людям вроде меня хочется плеваться при попытке завести такую бодягу.
Offline
#42 17.04.08 23:28
Re: Кто компилировал под Linux? Отзовись!
OCTAGRAM, ты забываешь с чего спор начался... реально уже все в оффтоп ушло... человек начинает изучать программирование (или продолжает изучать, не суть важно)... с какого языка начинать - абсолютно все равно... алгоритмирование как таковое - это не простейшие методы сортировки, а правильность подхода к решению задачи... даже способов сортировки много, а необходимо выбрать именно тот, который будет удовлетворять полностью... понятно, что ты уже давно программист и решаешь задачи куда более сложные, чем простые алгоритмы, но и ты в детстве начинал с простейших алгоритмов, таких как:
1. перевернуться на бок, подтянуть ноги, упереться коленками, выпрямить ноги...
2. снять штаны, сесть на гаршок, поссать, встать, одеть штаны, крикнуть в знак того, что поссал...
щас-то, понятное дело, тебе эти алгоритмы уже не нужны (пока что), они у тебя уже отпечатались... типа библиотеки под коркой образовалось...
буквально вчера натолкнулся на сравнение двух фрэймворков для PHP... и там было интересное заключение... CakePHP делает все автоматически, но вот как оно реально работает - надо еще изучать и копать в исходниках... ну, я не говорю про методы применения мат.ожидания для оптимизации запросов к сайту с оч. большой базой... но это все алгоритмы...
Исправлено Jaguar (17.04.08 23:29)
Offline
#43 18.04.08 03:06
Re: Кто компилировал под Linux? Отзовись!
а спор тем временем начинался с...
OCTAGRAM написал(а):
Matrim написал(а):
С/C++ хорош тем, что не дает забывать о том, что есть биты, память
Это не лучший из языков, которые не дают забывать о...
C++ требует знать разные ненужные вещи, причём не апостериори, а априори. Апостериори -- это если бы компилятор при попытке написать что-нибудь нездоровое не давал бы это скомпилировать или хотя бы warning исправно писал. А в C++, наоборот, скомпилируется, и это by design нетривиально пресечь на уровне языка. Подвохи и сюрьпризы. Не в последнюю очередь из-за "наследства" C.
Классика жанра:
Код::
#include <stdio.h>
int main () {
int length = 8265;
int width = 0252;
int height = 8292;
printf("length= %d\n", length);
printf("width = %d\n", width);
printf("height = %d\n", height);
}Программа компилируется без проблем
Что она выводит?
Код::
#include <limits.h>
/* If *y is zero and x > 0 set *k to the biggest positive integer.
* If *y is zero and x <=0 leave *k unchanged.
* If *y is not zero set *k to be x divided by *y and increment *y by 1.*/
void check_divide(int* k, int x, int* y) {
if(*y = 0)
if(x > 0)
*k = INT_MAX;
else
*k = x / *y; /* it is safe to divide by *y since it cannot be 0 */
*y++;
}Здесь 4 ошибки. Причём, в больших кусках кода не все заметны.
Код::
// If the signal ahead is clear then increase the speed.
void increase_speed_if_safe(int speed, int signal) {
if(signal == CLEAR);
increase_speed ();
}Тоже мало приятного.
Код::
int RADIO_PORT = ...;
void open (int port) {...}
void send (int port, char data) {...}
void close (intport) {...}
void send_bytes (char first_byte, char last_byte) {
open (RADIO_PORT);
for (char b = first_byte; b <= last_byte; b++) {
send (RADIO_PORT, b);
}
close (RADIO_PORT);
}бесконечный цикл, когда last_byte == 127 (и не проверяется переполнение)
плюс к этому
развлечение с NULL
развлечение с char
и прочее, прочее
Я не спорю, программирование сложная наука, но все эти прелести -- это отнюдь не адекватная сложность. Адекватная сложность -- это когда нужно учитывать тупиковые ситуации, планировать использование памяти. Это да. Это нетривиально, но без этого никак. Знать, что в языке числа с нуля восьмеричные -- не нужно. Помнить про искуственность сишного for -- тоже не нужно. (у C++ в for тоже есть, о чём помнить) Синтаксис должен быть более устойчив к незаметным ошибкам. И семантика тоже. Приколы с NULL и char совершенно излишни, никому не кажется? И ладно бы, компилятор напоминал бы обо всём этом.
Неудивительно, что по статистике в программах на C ошибки в три раза чаще (C++ в этом плане не особо лучше ИМХО). Более профессиональный программист делает меньше ошибок, чем менее профессиональный, но всё равно больше в три раза, чем мог бы. Да чего тут далеко ходить, недавно LINA пытался поставить. Ладно бы сегфолт в самом эмуляторе, но нет, до запуска эмулятора дело не дошло. Сегфолт при попытке докачать необходимые файлы из Интернета (сеть есть, деньги есть). Шекспир до версии 0.9.5 запустить на Intel процессоре было практически нереально, страшно глючил. Ну и вообще падает(именно сегфолтится) самый разный софт. При том, что на дворе 2008й год уже. Доколе? По одну сторону пипл, который хавает, по другую сторону программисты с нездоровой любовью к C++. Catch-22.
Вот я и утверждаю, что от C++ вообще и для самообучения в частности надо делать от ворот поворот. На C++ лучше всего изучается C++ %)
P. S. А ещё, касательно уязвимостей, куча третьих лиц нагло утверждают, что эти проблемы надо решать SELinux'ом, chroot'ом или DEP'ом в процессоре. Программы не должны запускать вредоносный код, потому что настоящие разработчики никогда не пишут "если в аргументе шеллкод, то исполнить шеллкод из аргумента". А не потому, что хитрый SELinux или chroot или DEP им не позволит этого сделать. Все эти SELinux'ы -- это вторичная защита, а никак не первичная.
Offline
#44 18.04.08 09:48
Re: Кто компилировал под Linux? Отзовись!
можно сколько угодно долго ругать С/С++, они от этого хуже не станут :)
испытание временем эти языки уже выдержали, у них есть своя ниша и в этой нише их заменить нечем. когда я спрашивал, на чем же писать новые говноязыки, если изжить С++, то я в общем то не шутил - операционные системы и языки до сих пор пишут на С; всё, что требует производительности пишут на С (и на ассемблере тоже. ассемблер это вообще ужасный язык для тех, кто небрежно относится к программированию. никаких проверок, собирается совершенно нерабочий код, сколько может продолжаться это безобразие?!)
эта тема вообще вызывает у меня здоровый смех, OCTAGRAM ругает С и при этом молчит, с какого же языка нужно начинать. да, в С++ сложный синтаксис и там можно навернуть такое, что без 0.5L потом не разобраться, но никто не заставляет этого делать - можно писать правильно, все зависит от программиста, жестких рамок нет.
С++ подходит для обучения программированию, я настаиваю :)
именно по той причине, что он требует внимательности и понимания происходящих в железном болване процессов.
p.s. я часто пользуюсь perl. это удивительный язык, после которого синтаксис С++ уже не так пугает. но начинать с perl не стоит, да.
Offline

