Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/546: Рейтинг темы: голосов - 546, средняя оценка - 4.63
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
28.09.2011, 10:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от taras atavin Посмотреть сообщение
А типы ты в графике рисуешь? Или на пианино наигрываешь? Нет? Неужели насвистываешь?
Я твоя не понимать?

Цитата Сообщение от taras atavin Посмотреть сообщение
плюсы как раз это поддерживают, в отличие от чистых сей. Но ни один вменяемый плюсовик этим не пользуется.
Ты бы сначала проверил, да и речь как раз о чистых сях.

PS так хотелось влезть в спор, но не зная как, пришлось х... писать? да?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2011, 10:56
Ответы с готовыми решениями:

Какой язык программирования лучше? (3)
Продолжение темы

Какой язык программирования лучше? (2)
Продолжение темы. Начало

Какой язык программирования лучше для создания игры???
Какой язык программирования лучше для создания игры, С++ или С#???

991
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
28.09.2011, 15:57
Цитата Сообщение от List2006 Посмотреть сообщение
Ты бы сначала проверил, да и речь как раз о чистых сях.
http://codepad.org/Cd79rtvt
C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
int main()
{
    if (int i = 100500)
        std::printf("it works in C++ language and i = %d", i);
    return 0;
}
Output:
1 it works in C++ language and i = 100500
http://codepad.org/rUG77MPA
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main()
{
    if (int i = 100500)
        printf("it works in C++ language and i = %d", i);
    return 0;
}
Output:
1 In function 'main':
2 Line 6: error: expected expression before 'int'
3 Line 7: error: 'i' undeclared (first use in this function)
4 Line 7: error: (Each undeclared identifier is reported only once
5 Line 7: error: for each function it appears in.)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
28.09.2011, 16:05
Jupiter, я так понимаю, что речь шла об этом:

C
1
2
3
4
5
6
7
8
void func (int x)
{
  if (x)
    {
      int y;
      y = x + 1;
    }
}
хотя сложно понять, кто и что имел в виду
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
29.09.2011, 01:21
Цитата Сообщение от Evg Посмотреть сообщение
Jupiter, я так понимаю, что речь шла об этом:

C
1
2
3
4
5
6
7
8
void func (int x)
{
  if (x)
    {
      int y;
      y = x + 1;
    }
}
хотя сложно понять, кто и что имел в виду
Да, речь была об этом.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.09.2011, 01:30
Цитата Сообщение от List2006 Посмотреть сообщение
Да, речь была об этом.
наличие такой возможности только плюс, вообще честно говоря еще не сталкивался с языками где не такой возможности
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
29.09.2011, 10:55
Цитата Сообщение от Jupiter Посмотреть сообщение
вообще честно говоря еще не сталкивался с языками где не такой возможности
По-моему во всяких академических языках программирования типа паскаля или оберона нет возможности задать локальный (вложенный) контекст. В старых бэйсиках вообще не было понятия контекста и все переменные были глобальными. Можно ли задать вложенный контекст в продвинутых бэйсиказ - хз. Но мне кажется, что есть дофига языков, где такой возможности нет. В фортране-77 вроде бы этого тоже нет
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
29.09.2011, 13:06
Цитата Сообщение от Jupiter Посмотреть сообщение
наличие такой возможности только плюс
Объявление в условие, если такое возможно, дает проблему существования того или иного идентификатора в каком-то куске программы (а мы помним что программы у нас большие), происходит ветвление не только в условиях, но и аналог ветвлений в коде (то есть какое-то извращение структурного программирование получается). И в этот момент ты попросту перестаешь контролировать свой код. Конечно есть проверки на существование переменных - но это скорее латание тех самых костылей.


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


PS в том же любимом php, постоянно видишь эти бесконечные проверки существования переменной, это превращается в эпидемию просто. Разве это вообще нормально?

PSS Кстати еще одна бесконечная радость это ошибка типа "ошибся в имени идентификатора на одну букву", когда в программе появляются клоны (и ты им присваиваешь, работаешь с ними думая что это одна и та же переменная...).
Вот эти все фичи я считаю "программированием для домохозяек", потому что опытному программисту такие "облегчения" отстреливают все что можно.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
29.09.2011, 13:09
Цитата Сообщение от List2006 Посмотреть сообщение
PS в том же любимом php, постоянно видишь эти бесконечные проверки существования переменной, это превращается в эпидемию просто. Разве это вообще нормально?
PSS Кстати еще одна бесконечная радость это ошибка типа "ошибся в имени идентификатора на одну букву", когда в программе появляются клоны (и ты им присваиваешь, работаешь с ними думая что это одна и та же переменная...).
Вот эти все фичи я считаю "программированием для домохозяек", потому что опытному программисту такие "облегчения" отстреливают все что можно.
то, что ты сейчас написал - это проблемы дизайна самого PHP
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
29.09.2011, 13:17
Цитата Сообщение от Jupiter Посмотреть сообщение
вообще честно говоря еще не сталкивался с языками где не такой возможности
Или мы снова не до поняли друг друга и ты говоришь о случае создание переменной в теле условия?
Ну тогда вот он первый - php, по-моему, точное не знаю еще javascript (это тот еще костыльный язык).

Добавлено через 4 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
то, что ты сейчас написал - это проблемы дизайна самого PHP
Спасибо КЭП, я про это и говорю. А контекст диалога в том что кто-то говорит что Си/Си++ хуже для веб программирование на стороне сервера (даже говорит ужасно все это), а я говорю что даже лучше чем php и привожу аргументы про его унылый дизайн.

Конечно речь идет когда приходится работать с большим кодом, а не с домашними страничками.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
29.09.2011, 14:14
Цитата Сообщение от Nameless One Посмотреть сообщение
то, что ты сейчас написал - это проблемы дизайна самого PHP
Это общая проблема любого языка, где не требуется описание переменных. А таких языков немало
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
29.09.2011, 14:16
Evg, контрпример - хаскель
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
29.09.2011, 14:22
Цитата Сообщение от Nameless One Посмотреть сообщение
Evg, контрпример - хаскель
Языком не владею, но это, насколько я себе представляю, функциональный язык, а не императивный
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
29.09.2011, 14:26
Evg, верно, но это не меняет факт, что такая программа на php спокойно отработает:
PHP
1
2
3
4
5
#!/usr/bin/env php
<?php
 
echo $no_var
?>
а на том же питоне аналогичная выдаст ошибку.
Да и с суперглобальными (слово-то какое плохое) массивами там замута есть...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
29.09.2011, 14:32
Цитата Сообщение от Nameless One Посмотреть сообщение
но это не меняет факт, что такая программа на php спокойно отработает
Так никто это и не оспаривает. Речь идёт о проблеме, что в большой программе становится сложно следить за именами идентификаторов и есть риск испортить другую переменную (потому как ты думал, что переменной с таким именем нет, а она есть), или ошибиться в имени переменной. О таких ошибках как правило узнают далеко не сразу
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.09.2011, 17:00
Цитата Сообщение от List2006 Посмотреть сообщение
Объявление в условие, если такое возможно, дает проблему существования того или иного идентификатора в каком-то куске программы (а мы помним что программы у нас большие), происходит ветвление не только в условиях, но и аналог ветвлений в коде (то есть какое-то извращение структурного программирование получается). И в этот момент ты попросту перестаешь контролировать свой код. Конечно есть проверки на существование переменных - но это скорее латание тех самых костылей.
Вот есть небольшой
код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
 
/**
 * The Class Main.
 * 
 * Created on: 29.09.2011
 * 
 * @author: M128K145
 */
public class Main {
 
   /**
    * The main method.
    * 
    * @param args
    *           the arguments
    */
   public static void main(String[] args) {
      if (args.length == 0) {
         System.out.println("Usage: starter [-c][-l][-h]\n\n" + "Options:\n" + "\t-c\tCommand\n"
               + "\t-l\tPath to log\n" + "\t-h\tHelp");
         return;
      }
      if (args[0].equals("-h")) {
         System.out.println("Usage: starter [-c][-l][-h]\n\n" + "Options:\n" + "\t-c\tCommand\n"
               + "\t-l\tPath to log\n" + "\t-h\tHelp");
         return;
      } else if (args[0].equals("-c")) {
         Process pp = null;
         FileOutputStream logFile = null;
         try {
            pp = Runtime.getRuntime().exec(args[1]);
            BufferedReader in = new BufferedReader(new InputStreamReader(pp.getInputStream()));
            boolean needLog = args[2].equals("-l");
 
            if (needLog)
               logFile = new FileOutputStream(args[3]);
            String line;
            while ((line = in.readLine()) != null) {
               if (!line.equals("")) {
                  System.out.println(line);
                  if (needLog)
                     logFile.write((line + "\n").getBytes());
               }
            }
 
         } catch (IOException e) {
            System.err.println(e.getMessage());
            // e.printStackTrace();
         } finally {
            pp.destroy();
            if (logFile != null)
               try {
                  logFile.close();
               } catch (IOException e) {
                  System.err.println(e.getMessage());
                  // e.printStackTrace();
               }
         }
      } else {
         System.out.println("Bad option: " + args[0] + ".\n\n" + "Usage: starter [-c][-l][-h]\n\n" + "Options:\n"
               + "\t-a\tCommand\n" + "\t-l\tPath to log\n" + "\t-h\tHelp");
      }
   }
 
}
. Вопрос - на сколько удобна была бы разработка, если все необходимые переменные я вынес бы из третьего ифа? И насколько удобна была бы разработка, если необходимо было расширить программу сильнее? А здесь все переменные успешно инкапсулированы в своем локальном блоке и никто о них не знает и никому они не мешают. Просто спрашивается, зачем вытягивать длинную портянку переменных в глобальную область, которые юзаются только в узком кейсе?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
29.09.2011, 17:08
Цитата Сообщение от M128K145 Посмотреть сообщение
Вопрос - на сколько удобна была бы разработка, если все необходимые переменные я вынес бы из третьего ифа?
А он вроде бы и не предлагал выносить переменные
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
29.09.2011, 17:54
Цитата Сообщение от Nameless One Посмотреть сообщение
Evg, верно, но это не меняет факт, что такая программа на php спокойно отработает:
PHP
1
2
3
4
5
#!/usr/bin/env php
<?php
 
echo $no_var
?>
а на том же питоне аналогичная выдаст ошибку.
Да и с суперглобальными (слово-то какое плохое) массивами там замута есть...
Насколько помню (в php) если в функцию передать не существующую переменную то там будет фатальная ошибка (остановка скрипта), но если передать в условие то, он хоть и отругает, но прочитает как "ложно".
Проблема в том что тот уровень который даст предупреждения часто отключают (по крайней мере мне так попадалось), и свободно используют переменные в условиях (если нет, ложно).

и в итоге будет логическая ошибка, которое может украсить вечер отладки:
PHP
1
2
3
4
$padk = 1;
....куча кода не трогающую переменную...
if ($pudk)
....куча кода...
Тут даже не ясно - автор проверяет одну переменную или это что то другое.

Добавлено через 2 минуты
M128K145
я тебя не много не понял, код вникать не стал, можно было короткий наглядный пример кинуть. Цени время других.
Но я не говорил выносить переменные аж в глобальную область, объявляй их перед использованием (принцип в С++), речь тут шла про тело условий.

Добавлено через 9 минут
Еще одна нелепость, когда уже более менее профессиональные программисты начинают вести phpDoc (Doc-блоки аналог javaDoc) и описывать типы переменных. То есть такой обязательной процедуры нет, но тип переменной очень важен что приходиться надстраивать нотацию php.

В и тоге нечто короткого сишного
C++
1
string name;
пишется
PHP
1
2
3
4
/** 
 * @var string  $name
*/
var $name;
Не правда ли убого?

PS
Совокупные данные по использованию типов (пруф на страницу).
http://www.tiobe.com/content/p... system.png

Не спроста "статическое" популярнее (хотя понятно статистика определяет популярности определеных языков).
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
29.09.2011, 18:00
Цитата Сообщение от List2006 Посмотреть сообщение
Насколько помню (в php) если в функцию передать не существующую переменную то там будет фатальная ошибка
фатальной ошибки (при настройках интерпретатора по умолчанию, по крайней мере), не будет, будет ворнинг.
Еще одна неприятная особенность php: при включенной опции register_global в файле конфигурации интерпретатора все переменные, полученные методами GET и POST, регистрируются в глобальном пространстве имен.
Представим следующую ситуацию, которая может случится при register_globals=on:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env php
<?php
 
/* Объявлена локальная переменная baz=42 */
$baz=42;
 
/* Методом POST передана переменная bar=0, которая импортируется в глобальное пр-во имен */
 
/* Опять же, делаем опечатку, получаем деление на ноль */
$foo = 1/$bar;
 
?>
Вся проблема, что в этом случае интерпретатор даже не сделает предупреждение (т.к., хотя мы и не объявляли $bar, она была импортирована из глобального массива $_POST)
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
29.09.2011, 18:11
Цитата Сообщение от Nameless One Посмотреть сообщение
фатальной ошибки (при настройках интерпретатора по умолчанию, по крайней мере), не будет, будет ворнинг.
Еще одна неприятная особенность php: при включенной опции register_global в файле конфигурации интерпретатора все переменные, полученные методами GET и POST, регистрируются в глобальном пространстве имен.
Представим следующую ситуацию, которая может случится при register_globals=on:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env php
<?php
 
/* Объявлена локальная переменная baz=42 */
$baz=42;
 
/* Методом POST передана переменная bar=0, которая импортируется в глобальное пр-во имен */
 
/* Опять же, делаем опечатку, получаем деление на ноль */
$foo = 1/$bar;
 
?>
Вся проблема, что в этом случае интерпретатор даже не сделает предупреждение (т.к., хотя мы и не объявляли $bar, она была импортирована из глобального массива $_POST)
+1, еще один гвоздь для тех кто с пенной у рта доказывает совершенство php для веб программирования, пугая что писать на С/C++/java/C#... это ужасно.

Так что начинаем писать движки сайтов на С/C++ (правда не думаю что такое случиться в массовом масштабе, но мне дико хочется чтобы php ушел с лидерства, чтобы не видеть его даже, и чтобы не пришел ему подобный).

Добавлено через 4 минуты
Кстати уже есть библиотеки Wt (c++) - для веб, только мне не нравиться что они смешали (как я понял) программирование на стороне сервера, и на стороне браузера (клиентское).
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.09.2011, 18:35
Цитата Сообщение от List2006 Посмотреть сообщение
объявляй их перед использованием (принцип в С++), речь тут шла про тело условий.
Суть была вот в чем. Есть main, в нем только ифы с телами, без переменных. Переменные нужны только в одном из ифов, конкретно строки 31-63. На сколько я понял, то вы утверждаете, что объявление переменных в теле if не есть гуд. У меня возник вопрос - насколько было бы удобно расширение этого кода, если вынести все объявления переменных из тела ифа и поставить их перед условием. Грубо говоря, вместо
C++
1
2
3
4
5
6
7
8
9
void func (int x) {
   if(x < 0)
      std::cout<<"...";
   else if (x == 0) {
      int y;
      y = x + 1;
   } else
      std::cout<<"...";
}
сделать
C++
1
2
3
4
5
6
7
8
9
void func (int x) {
   int y;
   if(x < 0)
      std::cout<<"...";
   else if (x == 0) {
      y = x + 1;
   } else
      std::cout<<"...";
}
c учетом того, что y используется только в одном ифе и под y понимается N-е количество разнотипных переменных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2011, 18:35

Какой язык программирования мне ст0ит учить?
... оканчивю мат. школу, и хочу поступить на программиста. Программирую (неплохо) на Паскале. Что мне нужно? Може С++? Или...?

Какой язык лучше / прибыльнее?
И так, мне 16 лет, седня днем пойду подавать документы в техникум на программиста соответственно. И назрел вопрос какой язык...

Какой язык веб-программирования выбрать? Плюсы\минусы
Вопрос что ни на есть из раздела священных, но все же... Какой язык веб-программирования кто предпочитает? У кого какие плюсы и...

Какой язык лучше изучать C или C++
Всем здравствуйте! Я новичок в программировании(знаю только Паскаль). Сейчас выбираю, какой язык учить: С или С++. Подскажите, пожалуйста,...

Какой язык лучше изучать с нуля?
Привет Всем!! Ребята подскажите пожалуйста какой язык лучше изучать с нуля ????? За ответ заранее спасибо!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
460
Закрытая тема Создать тему
Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru